1

ストアド プロシージャのリターン コードを取得する際に問題に直面しています。以下で説明するように、isql ステートメントを使用して、korn シェル スクリプトで sybase ストアド プロシージャを呼び出しています。

isql -U ${APPLID} -S{SERVER}> ${sqlMsg} << EOF
use ${DATABASE}
go
exec stored_procedure
go
EOF

returncode=$?

ストアド プロシージャ内でエラーが発生した場合、以下の方法ではキャプチャできません。

if [ $returncode -ne 0 ]
then
 print "failed"
fi

次のようなストアドプロシージャ内でreturnステートメントを使用してみました return (1)

しかし、これは私に期待した結果を与えませんでした。リターンコードをエコーすると、ステータスを 1 として返した後でも 0 としてエコーされました。SQL ログに 1 としてステータスが返されました。

4

2 に答える 2

1

SQL ステートメント内のエラーをキャプチャするには、以下を確認する必要があります。@@error

returncode=`isql -U ${APPLID} -S{SERVER}> ${sqlMsg} << EOF
             use ${DATABASE}
             go
             exec stored_procedure
             go
             select @@error
             go 
 EOF`

これにより、if 条件が期待どおりに機能するようになります。

于 2014-02-18T14:25:48.253 に答える