RAISE_ERROR

RAISE_ERROR 関数は、この関数を呼び出すステートメントが、指定された SQLSTATE (SQLCODE -438 と共に) および診断ストリングを付けてエラーを返すようにします。

構文図を読む構文図をスキップする
>>-RAISE_ERROR--(--sqlstate--,--diagnostic-string--)-----------><

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