これによると、次のresultProperty
とおりです。
コマンドのリターン コードを格納するプロパティの名前
...したがって、クエリした値ではなく、SQL*Plus から終了コードを取得します。スクリプトに複数のクエリ、または複数の列を含むクエリがある場合、何を設定すると予想されますか?
COLUMN
SQL*PlusコマンドのNEW_VALUE
構文を使用して置換変数を作成することで、終了ステータスを覆すことができます。
column table_count new_value my_exit_code
select count(*) as table_count from ...
exit &my_exit_code
...しかし、実際のエラーを検出する能力は失われます。
編集:終了コードが制限されていることを忘れていました。SQL*Plus のドキュメントから:
一部のオペレーティング システムでは、オペレーティング システムのリターン コードの範囲も制限されています。これにより、プラットフォーム間での EXIT n および EXIT 変数の移植性が制限されます。たとえば、UNIX では、戻りコード用のストレージは 1 バイトしかありません。したがって、戻りコードの範囲は 0 から 255 に制限されます。
したがって、常に非常に小さいカウントを期待していない限り、これは機能しません。また、値を変更するため、ゼロ/非ゼロが意味を持つことに依存することさえできません。
実際にはカウントは気にしないかもしれません。何かの存在をテストしているだけかもしれません。その場合、次のようなことができます。
select least(count(*), 1) as table_count from ...
... 行がない場合は 0 の終了コードが返され、行がある場合は 1 が返されます。