2009-05-20 10 views
2

Sybaseでストアド・プロシージャを実行するisqlを使用するAIXバッチ・ジョブがあります。ストアドプロシージャは、特定の条件下でエラーコードを返しています。 isqlがその戻りコードをAIXスクリプトに渡したいと思います。AIXでisqlから呼び出されたSybaseのストアド・プロシージャ:戻りコードの処理方法

ストアドプロシージャの戻りコードをisql内に取り込むことができますか、何らかの出力ファイルを書き込んで、私のAIXスクリプトでチェックする必要がありますか?

isqlコマンドの外観は次のとおりです。これはKornシェルスクリプト内で実行されています。

isql -D$database -S$server -U$userId -P$password << EOF 
EXEC MY_STORED_PROC $AN_INPUT_PARAMETER 
go 
EOF 

答えて

2

私の記憶が正しければ、$?は、コマンドの戻り値に設定されています。 EOF行の後にこのような何かを追加 :


if [[ $? != 0 ]]; then 
    print "stored procedure failed" 
    exit 
fi 
+0

ポストに感謝します。私は$について知らなかった?それは私のところに半分を得る。ストアドプロシージャが別の値を返す場合でも、isqlは0を返します。ストアドプロシージャの戻り値を認識するためにisqlを取得する方法はありますか? –

+1

ええと、エラーレベル(-mオプション)で再生したり、isql出力をファイルにリダイレクトして、それにクイックsed/awkを実行するのが最善の方法です。 –

0

が、これはあなたが達成したいとは何ですか?

isql -D$database -S$server -U$userId -P$password << EOF | grep RETVAL | awk -F"=" '{print $2}' | read value 
declare @retval int 
EXEC @retval = MY_STORED_PROC $AN_INPUT_PARAMETER 
SELECT "RETVAL=" + convert(varchar, @retval) 
go 
EOF 

echo "Procedure returned: $value"