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

在MySQL的存储过程中写入可选参数?,mysql,stored-procedures,Mysql,Stored Procedures,我想创建一个存储过程,根据传递给它的参数更新表中的所有字段或其中的几个字段 如何创建接受可选参数的存储过程?可选参数在MySQL上尚不受支持。我建议您在参数中传递null值,并且在存储过程中有一个IF语句 DELIMITER $$ CREATE PROCEDURE procName (IN param VARCHAR(25)) BEGIN IF param IS NULL THEN -- statements ; ELSE commands -- state

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


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

可选参数在MySQL上尚不受支持。我建议您在参数中传递
null
值,并且在存储过程中有一个
IF
语句

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

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

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

因为Mysql现在实际上归Oracle所有。我们也不希望在将来实施它。