sql >> Databasteknik >  >> RDS >> Oracle

Genererar SQL*Plus-skript med SQL*Plus

Problemet är att SQL*Plus tolkar din första ; som terminator för kommandot. Du kanske har märkt att om du skriver dina kommandon till en textfil och kör den (eller redigerar den i en textredigerare från med SQL*Plus) så fungerar det.

För att få det att fungera med live typing, om du verkligen vill göra det (verkar osannolikt om de kommer att vara väldigt långa!), kan du stänga av den automatiska upptäckten av terminatorn med SET SQLTERMINATOR off . Observera att du måste berätta för SQL*Plus att du är klar och att den ska köras med / instruktion som den andra ; ignoreras också.

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.

Om du bygger dessa från dataordboken är ett annat alternativ att använda PL/SQL för att göra frågorna och manipulationerna och dbms_output för att producera utdata ska du spoola, så länge som den slutliga filstorleken inte överskrider buffertgränserna.



  1. Hur tar jag reda på _exakt_ felet från SQL Server

  2. SQL Server Subquery returnerade mer än 1 värde. Detta är inte tillåtet när underfrågan följer =, !=, <, <=,>,>=

  3. Fråga för att kontrollera om fältet finns och sedan returnera resultatuppsättningen

  4. Hur återställer jag SqLite-databasen i Android?