RAISE_ERROR スカラー関数
RAISE_ERROR 関数は、指定された SQLSTATE、SQLCODE -438、および diagnostic-string のエラーが、 この関数を備えたステートメントから戻されるようにします。
スキーマは SYSIBM です。
- sqlstate
- 厳密に 5 バイトの文字ストリング。
これは、長さ 5 と定義された CHAR 型、
または長さ 5 以上と定義された VARCHAR 型でなければなりません。
Unicode データベースでは、この式で GRAPHIC ストリングを返すこともできます。
戻り値が文字ストリングでない場合、関数の評価の前に文字ストリングにキャストされます。
sqlstate 値は、アプリケーションが定義した SQLSTATE に関する以下の規則に従う必要があります。
- 各文字は、数字 (
0
から9
) またはアクセント記号のない大文字の英字 (A
からZ
) でなければなりません。 - SQLSTATE クラス (最初の 2 文字) は
00
、01
、または02
であってはなりません。これらはエラー・クラスではないからです。 - SQLSTATE クラス (最初の 2 文字) が
0
から6
、またはA
からH
までの文字で始まる場合、サブクラス (最後の 3 文字) はI
からZ
までの範囲にある文字で始まらなければなりません。 - SQLSTATE クラス (最初の 2 文字) が文字
7
、8
、または9
、あるいはI
からZ
までの文字で始まる場合、サブクラス (最後の 3 文字) は0
から9
、またはA
からZ
までの範囲のいずれでもかまいません。
SQLSTATE がこれらの規則に従っていない場合は、エラーになります (SQLSTATE 428B3)。
- 各文字は、数字 (
- diagnostic-string
- エラー条件を記述した文字ストリングまたはブール値を返す式。 Unicode データベースでは、この式で GRAPHIC ストリングを返すこともできます。 戻り値が文字ストリングでない場合、関数の評価の前に文字ストリングにキャストされます。 ストリングが 70 バイトを超えると、切り捨てられます。
結果
RAISE_ERROR 関数は、未定義データ・タイプでは常に NULL を戻します。この関数を、データ・タイプを判別できないコンテキストで使用するには、Cast 指定を使用して、NULL 値の戻される値にデータ・タイプを割り当てる必要があります。 CASE 式は、RAISE_ERROR 関数を使う最適のロケーションといえます。
例
従業員番号と学歴のリストを、学歴を Post Graduate、Graduate、
および Diploma として示します。
学歴が 20 を超える場合は、エラーになります。
SELECT EMPNO,
CASE WHEN EDUCLVL < 16 THEN 'Diploma'
WHEN EDUCLVL < 18 THEN 'Graduate'
WHEN EDUCLVL < 21 THEN 'Post Graduate'
ELSE RAISE_ERROR('70001',
'EDUCLVL has a value greater than 20')
END
FROM EMPLOYEE