SQLスクリプト・ジョブからのエラー・コードの戻り
SQLスクリプト・ジョブは、内部的にSQL*Plusを使用して、ユーザーのSQLまたはPL/SQLスクリプトを実行します。SQL*Plusが0を返す場合、ジョブは「成功」のステータスを返します。その他の値を返す場合は、「失敗」のジョブ・ステータスを返します。デフォルトでは、SQLスクリプトを実行し、エラーが発生している場合でも、SQL*Plusが値0を返すために、ジョブ・ステータスが「成功」になることがあります。このようなジョブで「失敗」ステータスを返すには、SQL*PlusのEXITを使用してゼロ以外の値を返します。
次の例は、PL/SQLまたはSQLスクリプトから値を返す方法を示しています。これらは、SQL*Plusの戻り値として順番に使用されるため、適切なジョブ・ステータス(「成功」または「失敗」)を返す方法が示されます。EXITコードを返す場合の詳細は、『SQL*Plusユーザーズ・ガイドおよびリファレンス』を参照してください。
例1
WHENEVER SQLERROR EXIT SQL.SQLCODE select column_does_not_exist from dual;
例2
-- SQL*Plus will NOT return an error for the next SELECT statement SELECT COLUMN_DOES_NOT_EXIST FROM DUAL; WHENEVER SQLERROR EXIT SQL.SQLCODE; BEGIN -- SQL*Plus will return an error at this point SELECT COLUMN_DOES_NOT_EXIST FROM DUAL; END; / WHENEVER SQLERROR CONTINUE;
例3
variable exit_code number; BEGIN DECLARE local_empno number(5); BEGIN -- do some work which will raise exception: no_data_found SELECT 123 INTO local_empno FROM sys.dual WHERE 1=2; EXCEPTION WHEN no_data_found THEN :exit_code := 10; WHEN others THEN :exit_code := 2; END; END; / exit :exit_code;