RAISE_ERROR
RAISE_ERROR 関数は、この関数を呼び出すステートメントが、指定された SQLSTATE (SQLCODE -438 と共に) および診断ストリングを付けてエラーを返すようにします。
- sqlstate
- 組み込み CHAR データ・タイプまたは VARCHAR データ・タイプの値を、正確に 5 文字で戻す式。sqlstate 値は、アプリケーションが定義した SQLSTATE に関する以下の規則に従う必要があります。
- 各文字は、数字 ('0' から '9') またはアクセント記号なしの英大文字 ('A' から 'Z') でなければなりません。
- SQLSTATE クラス (最初の 2 文字) は、'00'、'01'、または '02' (これらはエラー・クラスではないため) であってはなりません。
SQLSTATE がこの規則に従っていないと、エラーが戻されます。
- diagnostic-string
- エラー状態について説明した、組み込み CHAR データ・タイプまたは VARCHAR データ・タイプで、長さが最大で 1000 バイトまでの値を戻す式。
このストリングが 1000 バイトよりも長い場合は、切り捨てられます。
SQLCA を使用する場合、以下のアクションが実行されます。
- このストリングは、SQLCA の SQLERRMC フィールドに戻されます。
- ストリングの実際の長さが 70 バイトを超える場合、警告せずに切り捨てられます。
RAISE_ERROR の結果のデータ・タイプが未定義であるため、これはパラメーター・マーカーが許可される場合にのみ使用できます。パラメーター・マーカーが許可されないコンテキスト (選択リストで単独で使用など) でこの関数を使用するには、キャスト指定を使用して、戻される NULL 値にデータ・タイプを与えなければなりません。
RAISE_ERROR 関数は、未定義のデータ・タイプについては常に NULL を戻します。
例
- 従業員番号と学歴のリストを、学歴を Post Graduate、Graduate、
および Diploma として示します。
学歴が 20 を超える場合は、エラーになります。
SELECT EMPNO, CASE WHEN EDLEVEL < 16 THEN 'Diploma' WHEN EDLEVEL < 18 THEN 'Graduate' WHEN EDLEVEL < 21 THEN 'Post Graduate' ELSE RAISE_ERROR( '07001', 'EDLEVEL has a value greater than 20' ) END FROM EMPLOYEE