Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Generieren eines SQL*Plus-Skripts mit SQL*Plus

Das Problem ist, dass SQL*Plus Ihren ersten ; interpretiert als Terminator für den Befehl. Sie haben vielleicht bemerkt, dass es funktioniert, wenn Sie Ihre Befehle in eine Textdatei schreiben und diese ausführen (oder sie in einem Texteditor mit SQL*Plus bearbeiten).

Damit es mit der Live-Eingabe funktioniert, wenn Sie das wirklich wollen (scheint unwahrscheinlich, wenn sie sehr lang sein werden!), können Sie die automatische Erkennung des Abschlusszeichens mit SET SQLTERMINATOR off . Beachten Sie, dass Sie SQL*Plus mitteilen müssen, dass Sie fertig sind und dass es mit / ausgeführt werden soll Anweisung als zweites ; wird ebenfalls ignoriert.

SQL> SPOOL myscript.sql
SQL> SET SQLTERMINATOR off
SQL> SELECT q'[SPOOL log
  2  SELECT COUNT(*) FROM DUAL;
  3  PROMPT Done.
  4  ]' FROM DUAL
  5  /
SPOOL log
SELECT COUNT(*) FROM DUAL;
PROMPT Done.

Wenn Sie diese aus dem Datenwörterbuch erstellen, besteht eine weitere Option darin, PL/SQL zu verwenden, um die Abfragen und Manipulationen und dbms_output durchzuführen um die Ausgabe zu erzeugen, die Sie spoolen müssen, solange die endgültige Dateigröße die Puffergrenzen nicht überschreitet.