Esiste un modo in cui sqlplus può stampare quale istruzione è stata eseguita. Voglio dire che ho alcuni file .sql che eseguo in uno script bash. Ho bisogno di sapere quando ho letto il file di log che ha eseguito l'istruzione sqlplus.sqlplus print running statement
Esempio: Dire che ho questo file test.sql:
set timing on
create table foo (a varchar2(10));
create table bar (b varchar2(10));
exit
Quando controllo il registro ottengo questo:
Table created.
Elapsed: 00:00:00.02
Table created.
Elapsed: 00:00:00.01
Che non è informativo. C'è un modo in cui posso ottenere output come questo:
Table foo created.
Elapsed: 00:00:00.02
Table bar created.
Elapsed: 00:00:00.01
e neppure come questo:
create table foo (a varchar2(10));
Table created.
Elapsed: 00:00:00.02
create table bar (b varchar2(10));
Table created.
Elapsed: 00:00:00.01
So che posso usare PRONTA prima di ogni affermazione, ma ho grossi script SQL e sarebbe noioso scrivere PROMPT prima di ogni affermazione.
EDIT:
Per la soluzione di Allan di lavorare sempre (vale a dire utilizzando "set eco sulla"), si dovrebbe evitare il seguente:
1) Non utilizzare l'opzione -S con sqlplus perché questo sopprimerà la visualizzazione dell'eco dei comandi.
2) Non "cat" lo script a SQLPlus come questo:
cat test.sql | sqlplus scott/[email protected]
Grazie. Questo ha funzionato evitando due cose. Vedi la mia domanda aggiornata. – Younes
Questo non funziona quando si esegue '@ script.sql'. In tal caso, i comandi all'interno dello script vengono riecheggiati, ma il comando originale ('@ script.sql') non viene riecheggiato. Per motivi di tracciabilità, ho davvero bisogno che i comandi dell'utente vengano registrati. –
(in tutti gli altri casi però, "imposta echo on" funziona alla grande) –