Intermediate

Q:

24-13.

You can do these operations:

a. Read sequentially the contents of a server-side file.
b. Append text to the end of an existing file.
e. Create a new file and write text to it.

You definitely cannot do these operations:

c. Read from a “random” location in a file.
d. Delete a file.

You can accomplish these tasks only by reading in the complete contents of a file and then processing that text (write it to another file or to a another file in a different directory, or count the bytes):

f. Copy a file.
g. Move a file to a different location.
h. Change the access privileges on a file.
i. Obtain the number of bytes in a file without reading the entire file.

Q:

24-14.

You see the following exception:

ORA-01403: no data found

This program keeps on reading forever, or until an exception is raised. UTL_FILE.GET_LINE raises the NO_DATA_FOUND exception when it reads past the end of the file, so you get an unhandled exception.

Q:

24-15.

Here is one possible implementation:


/* Filename on web page: showfile.sp */
CREATE OR REPLACE PROCEDURE show_file (
   loc IN VARCHAR2,
   file IN VARCHAR2
   )
IS
   fid UTL_FILE.FILE_TYPE := UTL_FILE.FOPEN (loc, file, 'R');
   line VARCHAR2(2000);
BEGIN
   DBMS_OUTPUT.PUT_LINE ('Contents of ' || file);
   LOOP
      UTL_FILE.GET_LINE (fid, line);
      DBMS_OUTPUT.PUT_LINE (line);
   END LOOP;
EXCEPTION
   WHEN OTHERS THEN UTL_FILE.FCLOSE (fid);
END;
/

Notice that this program reads and displays ...

Get Oracle PL/SQL Programming: A Developer's Workbook 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.