機能
例外条件を再送します。
記述形式
構文の構成
一般規則
RESIGNAL文はハンドラ宣言のハンドラ動作内にのみ指定できます。
信号値を省略した場合、RESIGNAL文を含むハンドラが関連付けられた例外事象をハンドラ内で再度発生させます。
RESIGNAL文に信号値を指定した場合、指定された例外事象を発生させます。
SQLSTATE値を指定する場合、SQLSTATE値は、例外コードに60を指定する必要があります。副例外コードは0~9およびA~Zまでの任意の文字を3桁で指定します。
RESIGNAL文に条件名を指定する場合、例外コードが60および副例外コードが0~9およびA~Zまでの任意の文字3桁で表現されたSQLSTATE値を定義した条件名を指定する必要があります。
例外メッセージは文字列型で指定します。長さは最大256バイトまでが有効となります。それ以上の長さを指定した場合、切り捨てられます。
使用例
RESIGNAL文を利用して、呼出し側に例外事象を通知する例を以下に示します。
CREATE PROCEDURE S1.在庫チェック(IN 在庫数パラ INT) BEGIN DECLARE SQLSTATE CHAR(5); DECLARE SQLMSG CHAR(256); DECLARE EXIT HANDLER FOR SQLEXCEPTION BEGIN RESIGNAL; -- 呼出し元に発生例外を通知する END; -- ルーチン本体の処理 IF (在庫数パラ < 0) THEN SIGNAL SQLSTATE'60001' '在庫数が不当です'; END IF; END