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:
| text | The line of text. |
| len | The length of the line of text. |
| pos | The current position of a scan through this line. |
| line | The line number associated with this text in the source. |
| line# | The line number associated with this text in the target. |
| is_blank | TRUE if the text RTRIMS to NULL. |
| eof | TRUE if no line was placed into the record. |
12.6.1. Main Steps of get_line
The get_line procedure has two main steps:
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 ...