43

テーブル内のすべてのフィールド、または渡されたパラメータに応じて一部のフィールドを更新するストアドプロシージャを作成したいと思います。

オプションのパラメータを受け入れるストアドプロシージャを作成するにはどうすればよいですか?

4

2 に答える 2

56

Optional ParametersMySQLではまだサポートされていません。nullパラメータに値を渡し、ストアドプロシージャ内にIFステートメントを含めることをお勧めします。

DELIMITER $$
CREATE PROCEDURE procName
(IN param VARCHAR(25))
BEGIN
   IF param IS NULL THEN 
      -- statements ;
   ELSE commands
      -- statements ;
   END IF;
END$$
DELIMITER ;
于 2012-09-29T11:22:26.023 に答える
6

特殊なケースは、パラメーターが NULL にならない場合です。つまり、 がキーであるためです。これらの場合にはトリックを使用します。パラメーターを-1に設定します。

CREATE PROCEDURE procCreate
(IN id_cosa INT(11))
  BEGIN
    IF id_cosa != -1 THEN
      ~~(your code here)~~
    END IF
  END
于 2014-02-22T14:02:35.990 に答える