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

use*_*747 36 mysql stored-procedures

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

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

Joh*_*Woo 47

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 ;
Run Code Online (Sandbox Code Playgroud)

  • 由于Mysql现在几乎归Oracle所有.我们也不希望将来也能实施它. (5认同)

小智 6

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

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