何か案は?「mysql ストアド プロシージャにデフォルト パラメータを設定することは可能ですか?」という質問をしました。今日、答えは非常に強いものでした。「いいえ、これは不可能です。」
では、私の次の質問は、php/mysql 開発者としてこの問題をどのように処理するかということです。null を渡しますか? SP には、null の場合に変数を設定する IF ブロックがありますか? PHP でデフォルト値を渡しますか?
ありがとう。
何か案は?「mysql ストアド プロシージャにデフォルト パラメータを設定することは可能ですか?」という質問をしました。今日、答えは非常に強いものでした。「いいえ、これは不可能です。」
では、私の次の質問は、php/mysql 開発者としてこの問題をどのように処理するかということです。null を渡しますか? SP には、null の場合に変数を設定する IF ブロックがありますか? PHP でデフォルト値を渡しますか?
ありがとう。
COALESCE()
ストアドプロシージャでローカル変数の値を設定するために使用する1つの解決策は次のとおりです。
DELIMITER !!
CREATE PROCEDURE dflt (IN param1 INT)
BEGIN
DECLARE param1_dflt INT DEFAULT 456
SET param1_dflt = COALESCE(param1, param1_dflt);
SELECT param1_dflt;
END!!
DELIMITER ;
CALL dflt(123);
+-------------+
| param1_dflt |
+-------------+
| 123 |
+-------------+
CALL dflt(NULL);
+-------------+
| param1_dflt |
+-------------+
| 456 |
+-------------+
これは、呼び出しスクリプトではなく、データベースで処理する必要があります。デフォルトのパラメーターを定義できない場合はNULL
、値を渡し、ストアド プロシージャにデフォルト設定を行わせます。