2

何か案は?「mysql ストアド プロシージャにデフォルト パラメータを設定することは可能ですか?」という質問をしました。今日、答えは非常に強いものでした。「いいえ、これは不可能です。」

では、私の次の質問は、php/mysql 開発者としてこの問題をどのように処理するかということです。null を渡しますか? SP には、null の場合に変数を設定する IF ブロックがありますか? PHP でデフォルト値を渡しますか?

ありがとう。

4

3 に答える 3

4

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 | 
+-------------+
于 2009-06-12T00:17:08.167 に答える
0

これは、呼び出しスクリプトではなく、データベースで処理する必要があります。デフォルトのパラメーターを定義できない場合はNULL、値を渡し、ストアド プロシージャにデフォルト設定を行わせます。

于 2009-06-11T23:55:14.647 に答える