Oracle -> Exceldatei aus PL/SQL schreiben -> Tutorial 6
 

Tutorials

Tutorial

Hyperlinks und Formeln

English version

LOB

Alle in den vorhergehenden Tutorials gezeigten Funktionen stehen auch zur Verfügung, wenn du nicht direkt in eine Datei schreiben willst, sondern in ein LOB, etwa um dieses dann per Mail zu verschicken.

Im allgemeinen genügt es, den Datei Handle bei den Parametern duch ein CLOB zu ersetzen, das immer als IN OUT NOCOPY definiert ist.

DECLARE
  l_cursor NUMBER := dbms_sql.open_cursor;
  v_clob   CLOB;

BEGIN
  dbms_sql.parse(
     l_cursor
    ,'SELECT   username, user_id, created ' ||
     'FROM     all_users ' ||
     'WHERE    UPPER(username) = ''HR'' '
    ,dbms_sql.native
    );
  xml_spreadsheet.abfrage(
     p_cursor => l_cursor
    ,p_file => v_clob
    ,p_sheetname => 'query'
    );
END;
/

Jetzt enthält das LOB genau die gleiche Datei, die im Tutorial 'Erste Schritte' bei Test 2 geschrieben wurde. Um dies zu überprüfen musst du es noch in eine Datei schreiben. Ergänze dafür im Deklarationsteil:

  v_fileHandle utl_file.FILE_TYPE;

Und am Ende des PL/SQL-Blocks:

  v_fileHandle := utl_file.fopen ('DOC', 'clobtest.xml', 'wb', 32767);
  utl_file.put_raw(v_fileHandle, utl_raw.cast_to_raw(v_clob));