2016-01-25 2 views
0

Вот мой SQLPLUS сценарий:Sqlplus SERVEROUTPUT не показывая

sqlplus <<EOF>> $LOGFILE $USER_NAME_PASSWORD 
WHENEVER SQLERROR EXIT SQL.SQLCODE 
spool $LOGFILE 
set serveroutput on size 20000 
show serveroutput 
set echo on 
set sqlblanklines off 
set define off 
@$1 
spool off 
exit 
EOF 
RC=$? 

А вот мой SQL скрипт:

DECLARE 

L_COUNT NUMBER := 0; 

BEGIN 

    FOR i in 1..4 LOOP 

     l_count := l_count + 1; 

    END LOOP; 

    dbms_output.put_line('Num: ' || l_count); 

END; 

Я бы ожидать, чтобы увидеть результаты l_count в моей $ LOGFILE, но я не. Я уверен, что у меня отсутствует функция набора, когда я вызываю sqlplus.

Любые идеи?

ответ

1

Вы никогда не выполнить свой PL/SQL анонимного блока. Вам нужно поставить «/» после окончания END; Заявление:

DECLARE 
L_COUNT NUMBER := 0; 
BEGIN 
    FOR i in 1..4 LOOP 
     l_count := l_count + 1; 
    END LOOP; 
    dbms_output.put_line('Num: ' || l_count); 
END; 
/

Кроме того, это не очень хорошая идея, чтобы использовать обе оболочки стандартный вывод Перенаправление писать в тот же файл, как указано вашей командой СПУЛИНГА. Выберите один или другой, а не оба.

0

Если вы хотите регистрировать что-либо в любом файле журнала, например. logfile.log, используйте

SQL> spool logfile.log 

после выполнения вашего анонимного блока, отключить катушку

SQL> spool off 
+0

Я только что добавил, что (отредактированные изменения выше). Он по-прежнему не показывает мой переменный вывод в моем файле журнала. – Andrew

+0

, попробуйте использовать «logfile.log», это действительно работает, когда вы используете имя файла и расширение файла – Martina