2010-12-07 9 views
6

テーブル内に行cntを取得する簡単なクエリスクリプトを作成しようとしています。しかし、私はあらゆる種類のOracleメッセージを抑制するために問題に直面しています。私が興味を持ってすべてが出力されます。ここではスクリプト内でsqlクエリを実行中にメッセージを表示しないようにする

は私のスクリプトです:

#!/usr/bin/ksh 
sqlplus /nolog <<EOF 
connect user/[email protected] 
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にすべてのメッセージを表示させないように頼むことはできませんか?

答えて

7

あなたは-sフラグを試してみてください

#!/usr/bin/ksh 
sqlplus -s /nolog <<EOF 
connect user/[email protected] 
set serveroutput on 
set heading off 
set feedback off 
select count(*) from table; 
exit; 
EOF 
+0

私は、-sを追加することで、私が見たいメッセージもありません。問題は、これらのメッセージをすべて非表示にして、表示したいメッセージのみを表示する方法です。例えば、 dbms_output.put_line( 'Hello Word') Hello Wordのみを表示します。どうやってやるの??? – vogash

+0

@vogash、詳細は私の答えを見てください – maxschlepzig

4

サイレントモードにします。sqlplus -sを使用する必要があります。例えば、

sqlplus /s /nolog <<EOF 

...

6

あなたはsqlplusに大文字Sオプションを追加する必要があります。

(オラクル11.2.0.4.0が付属しています。sqlplusの)ヘルプメッセージを指定します。

$ sqlplus -S /nolog << EOF 
connect user/[email protected] 
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 

ようなもので

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

あなただけの出力を得ますDBMS_OUTPUTバッファとselect文の結果

関連する問題