12.6. Reading From the Source

The PLVio.get_line procedure is the core program for reading from the source. This header for this program is:

PROCEDURE get_line
   (line_inout IN OUT line_type,
    curr_line#_in IN INTEGER := NULL);

The first argument, line_inout, is a record of type line_type (defined in the PLVio specification). The second argument, curr_line#, provides a current line number; if that number is not NULL, it will be used to increment the line# value found in the line_inout record.

The record contains all the information about a line necessary either for PLVio activity or other actions on a line of text. The definition of the record TYPE is:

TYPE line_type IS RECORD
   (text VARCHAR2(2000) := NULL,
    len INTEGER := NULL,
    pos INTEGER := 1,
    line INTEGER := 0, /* line # in original */
    line# INTEGER := 0,	/* line # for new */
    is_blank BOOLEAN := FALSE,
    eof BOOLEAN := FALSE);

The following table explains the different fields of a line_type record:

textThe line of text.
lenThe length of the line of text.
posThe current position of a scan through this line.
lineThe line number associated with this text in the source.
line#The line number associated with this text in the target.
is_blankTRUE if the text RTRIMS to NULL.
eofTRUE if no line was placed into the record.

12.6.1. Main Steps of get_line

The get_line procedure has two main steps:

  1. Read a line from the source repository. If reading from a database table, get_line uses the DBMS_SQL builtin package to fetch the next row and read ...

Get Advanced Oracle PL/SQL Programming with Packages now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.