機能
例外条件を送信します。
記述形式
構文の構成
一般規則
SIGNAL文を実行すると、例外条件が発生し、指定されたSQLSTATE値や例外メッセージがプロシジャルーチン内のSQL変数SQLSTATEおよびSQLMSGに設定されます。
SIGNAL文に指定するSQLSTATE値は、例外コードに60を指定する必要があります。副例外コードは0~9およびA~Zまでの任意の文字を3桁で指定します。不当な値を指定した場合、定義エラーになります。
SIGNAL文に条件名を指定する場合、例外コードが60および副例外コードが0~9およびA~Zまでの任意の文字3桁で表現されたSQLSTATE値を定義した条件名を指定する必要があります。その他のSQLSTATE値を定義した条件名を指定した場合、定義エラーになります。
例外メッセージは文字列型で指定します。長さは最大256バイトまでが有効となります。それ以上の長さを指定した場合、切り捨てられます。
使用例
SIGNAL文を利用して、ユーザが任意に例外を発生する例を以下に示します。
CREATE PROCEDURE S1.在庫チェック(IN 在庫数パラ INT) BEGIN DECLARE SQLSTATE CHAR(5); DECLARE SQLMSG CHAR(256); DECLARE ユーザ定義例外1 CONDITION FOR SQLSTATE'60001'; DECLARE EXIT HANDLER FOR SQLEXCEPTION BEGIN RESIGNAL; -- 呼出し元に発生例外を通知する END; -- ルーチン本体の処理 IF (在庫数パラ < 0) THEN SIGNAL ユーザ定義例外1 '在庫数が不当です'; END IF; END