подавление сообщений при выполнении SQL-запросов в скрипте - PullRequest
8 голосов
/ 07 декабря 2010

Я пытаюсь написать простой запрос-скрипт, который выводит мне cnt строк в таблице.Однако я сталкиваюсь с проблемой подавления всевозможных сообщений оракула.Все, что меня интересует, это вывод:

Вот мой сценарий:

#!/usr/bin/ksh
sqlplus /nolog <<EOF
connect user/pswd@databse
set serveroutput on
set heading off
set feedback off
select count(*) from table;
exit;
EOF

Мой вывод выглядит так:

.desktop% sh sql.ksh 
SQL*Plus: Release 10.2.0.2.0 - Production on Tue Dec 7 12:00:42 2010
Copyright (c) 1982, 2005, Oracle.  All Rights Reserved.
SQL> Connected.
SQL> SQL> SQL> SQL> 
        70
SQL> Disconnected from Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options

Все, что я хочу, это число 70без каких-либо сообщений, чтобы я мог регулярно записывать его в журналы и т.д.Я знаю, что могу разобрать номер, но мне придется менять его каждый раз, когда меняется мой запрос или схема.Разве я не могу просто попросить mysqlplus подавить все эти сообщения?

Ответы [ 3 ]

10 голосов
/ 27 января 2015

Вы должны добавить заглавную S опцию к sqlplus.

В справочном сообщении (sqlplus, поставляемом с Oracle 11.2.0.4.0) указано:

-S    Sets silent mode which suppresses the display of
      the SQL*Plus banner, prompts, and echoing of
      commands.

С чем-то вроде

$ sqlplus -S /nolog << EOF
connect user/pswd@databse
set serveroutput on
set heading off
set feedback off
exec package.procedure($1); -- procedure that calls DBMS_OUTPUT procedures ...
select 2 from dual;
-- ...
exit;
EOF

вы получаете только выходные данные из буфера DBMS_OUTPUT и результаты из операторов выбора.

7 голосов
/ 07 декабря 2010

Вам нужно использовать sqlplus -s для бесшумного режима

#!/usr/bin/ksh
sqlplus -s /nolog <<EOF
connect user/pswd@databse
set serveroutput on
set heading off
set feedback off
select count(*) from table;
exit;
EOF
4 голосов
/ 07 декабря 2010

Попробуйте флаг -s. например.,

sqlplus /s /nolog <<EOF

...

...