2013-05-09 15 views
5

Czy istnieje sposób, w którym sqlplus może wydrukować instrukcję, którą wykonał. Mam na myśli niektóre pliki .sql, które uruchamiam w skrypcie bash. Muszę wiedzieć, kiedy czytam plik dziennika, którego instrukcji SQL uruchomił.sqlplus print running statement

Przykład: Say mam ten plik test.sql:

set timing on 
create table foo (a varchar2(10)); 
create table bar (b varchar2(10)); 
exit 

Kiedy sprawdzić dziennik uzyskać to:

Table created. 

Elapsed: 00:00:00.02 

Table created. 

Elapsed: 00:00:00.01 

który nie został poinformowany. Czy istnieje sposób, gdzie mogę uzyskać wyjście tak:

Table foo created. 

Elapsed: 00:00:00.02 

Table bar created. 

Elapsed: 00:00:00.01 

Albo jeszcze tak:

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 

wiem, że mogę używać Pytaj przed każdym stwierdzeniem, ale mam duże skryptów SQL i byłoby żmudne napisać PROMPT przed każdym stwierdzeniem.

EDIT:

do sporządzania roztworu do Allana zawsze działa (czyli używając "zestaw echo na"), należy unikać następujących czynności:

1) Nie używaj opcji -S z sqlplus, ponieważ spowoduje to zablokowanie wyświetlania echa poleceń.

2) nie „Cat” skrypt do sqlplus tak:

cat test.sql | sqlplus scott/[email protected] 

Odpowiedz

12

Komenda szukasz jest SET ECHO ON, który powtórzy każde stwierdzenie, że jest wystawiony.

+1

Dzięki. To działało przez unikanie dwóch rzeczy. Zobacz moje zaktualizowane pytanie. – Younes

+0

To nie działa podczas uruchamiania '@ script.sql'. W takim przypadku komendy w skrypcie otrzymują echo, ale oryginalne polecenie ('@ script.sql') nie zostanie odtworzone. Do celów związanych ze śledzeniem, naprawdę potrzebuję rejestrować polecenia użytkownika. –

+0

(we wszystkich innych przypadkach jednak funkcja "set echo on" działa świetnie) –

0

Jeśli musisz znać dokładny czas utworzenia obiektów, możesz zapytać DBA_OBJECTS lub ALL_OBJECTS dla kolumny CREATED.