Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Generowanie skryptu SQL*Plus za pomocą SQL*Plus

Problem polega na tym, że SQL*Plus interpretuje Twój pierwszy ; jako terminator polecenia. Być może zauważyłeś, że jeśli zapiszesz swoje polecenia do pliku tekstowego i wykonasz je (lub edytujesz je w edytorze tekstowym z SQL*Plus), to zadziała.

Aby działało z pisaniem na żywo, jeśli naprawdę chcesz to zrobić (wydaje się mało prawdopodobne, jeśli będzie to bardzo długie!), możesz wyłączyć automatyczne wykrywanie terminatora za pomocą SET SQLTERMINATOR off . Zwróć uwagę, że będziesz musiał poinformować SQL*Plus, że skończyłeś i że powinien zostać wykonany z / instrukcja jako drugi ; jest również ignorowany.

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.

Jeśli budujesz je ze słownika danych, inną opcją jest użycie PL/SQL do wykonywania zapytań i manipulacji oraz dbms_output aby wytworzyć dane wyjściowe, które zamierzasz buforować, o ile ostateczny rozmiar pliku nie przekroczy limitów bufora.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak uruchomić skrypt SQL Plus w PowerShell

  2. Procesy w tle

  3. Dlaczego zapytanie Oracle 12c wymaga podwójnych cudzysłowów wokół tabeli?

  4. Dlaczego otrzymuję błąd, gdy próbuję zmienić nazwę tabeli po FROM?

  5. Pobieranie określonych ciągów w ciągu za pomocą Oracle SQL