在MySQL中的存储过程中编写可选参数?

时间:2012-09-29 11:18:49

标签: mysql stored-procedures

我想创建一个存储过程,根据传递给它的参数更新表中的所有字段或只更新一些字段。

如何创建接受可选参数的存储过程?

2 个答案:

答案 0 :(得分:45)

MySQL尚不支持

Optional Parameters。我建议您在参数中传递null值,并在存储过程中包含IF语句。

DELIMITER $$
CREATE PROCEDURE procName
(IN param VARCHAR(25))
BEGIN
   IF param IS NULL THEN 
      -- statements ;
   ELSE commands
      -- statements ;
   END IF;
END$$
DELIMITER ;

答案 1 :(得分:4)

特殊情况是参数不能为'NULL,即因为是键。我在这种情况下使用了一个技巧:我将参数设置为-1:

CREATE PROCEDURE procCreate
(IN id_cosa INT(11))
  BEGIN
    IF id_cosa != -1 THEN
      ~~(your code here)~~
    END IF
  END