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 回答