実現したいこと
ストアドプロシージャで渡した引数がnullかどうかをチェックして、nullだった場合は処理を終了したい。
知りたいこと
MySQLではストアドプロシージャの引数を省略できない?
環境
Windows10
MySQL(MariaDB 10.4.13)
A5-mk2
※載せたコードとエラーはpaiza.ioのMySQLでチェック
状況
仕事の講義で、PL/SQL用に書かれた指示を元にMySQL(MariaDB)のコードを書いています。
その中にストアドプロシージャへ渡した引数がnullかどうかをチェックして、nullだった場合は処理を終了するという指示があります。
null判定は書いたのですが、MySQLでは引数が省略できない、デフォルト値も設定できない、という情報を読みました。
ですが、確定的な公式の情報が見当たらないため、「省略できない」という確信も持てない状態です。
MySQL
1CREATE PROCEDURE usp_test( 2, OUT hikisu2 VARCHAR(512) -- 引数2 3, IN hikisu3 VARCHAR(8) -- 引数3(省略したい値) 4) 5process:begin 6 DECLARE a_kbn VARCHAR(1); 7 8 if hikisu3='0' then 9 set hikisu3=null; 10 end if; 11 IF hikisu3 IS NULL THEN 12 SET hikisu2 = 'エラー'; 13 LEAVE process; -- 処理終了 14else if 15 set hikisu2='nullじゃない'; -- デバッグ用 16 END IF; 17 END 18// 19DELIMITER ; 20 21call `usp_test`(@xx,@cc,'ア'); 22select @xx,@cc;
代用方法など、他の手段でもありましたらお願いします。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。