12.7. Writing to the Target

The put_line procedure of PLVio writes text to the target repository. Its header is overloaded as follows:

PROCEDURE put_line
   (string_in IN VARCHAR2, line#_in IN INTEGER := NULL);

PROCEDURE put_line (line_in IN line_type);

The first, "string" version of put_line simply bundles the text and line number into a record of type line_type and then calls the second, "record" version of put_line as shown below:

PROCEDURE put_line 
   (string_in IN VARCHAR2, line#_in IN INTEGER := NULL)
IS
   v_line line_type;
BEGIN
   v_line.text := string_in;
   v_line.line# := line#_in;
   put_line (v_line);
END;

Why do I bother with these two versions? To make the package as easy as possible to use. In many situations, you will simply want to take a string and an optional line number and throw it out into the target. You aren't dealing with the more complex aspects of PLVio and therefore have no need for a line record. In this situation, calling the "record version" of put_line becomes a hassle. By writing a few extra lines of code into the package itself, I relieve my users of the burden of declaring a throw-away data structure—the line_type record.

If you plan to build reusable code that will really and truly be reused, you will need to make this kind of extra effort.

The put_line procedure (which from this point on refers to the record version) hides all of the complexity about the current target. You simply tell PLVio that you want to put a line in the target; it worries about the ...

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.