sql >> Database teknologi >  >> RDS >> Oracle

Generering af SQL*Plus-script ved hjælp af SQL*Plus

Problemet er, at SQL*Plus fortolker din første ; som terminator for kommandoen. Du har måske bemærket, at hvis du skriver dine kommandoer til en tekstfil og udfører den (eller redigerer den i en teksteditor fra med SQL*Plus), virker det.

For at få det til at fungere med direkte indtastning, hvis du virkelig ønsker at gøre det (det virker usandsynligt, hvis de bliver meget lange!), kan du slå den automatiske registrering af terminatoren fra med SET SQLTERMINATOR off . Bemærk, at du bliver nødt til at fortælle SQL*Plus, at du er færdig, og at den skal udføres med / instruktion som den anden ; ignoreres også.

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.

Hvis du bygger disse fra dataordbogen, er en anden mulighed at bruge PL/SQL til at udføre forespørgsler og manipulationer og dbms_output for at producere det output, du vil spoole, så længe den endelige filstørrelse ikke overskrider buffergrænserne.



  1. Hvad er forskellen mellem count(0), count(1) og count(*) i mySQL/SQL?

  2. Klikbare HTML-tabelrækker, der POST til et PHP-popup-vindue

  3. c# læste SQL Table (med specialtegn) ind i DataSet

  4. Dense_rank første Oracle til Postgresql konverter