【发布时间】:2012-09-21 01:27:17
【问题描述】:
我想创建一个存储过程,它可以根据传递给它的参数更新表中的所有字段或仅更新其中的一些字段。
如何创建一个接受可选参数的存储过程?
【问题讨论】:
我想创建一个存储过程,它可以根据传递给它的参数更新表中的所有字段或仅更新其中的一些字段。
如何创建一个接受可选参数的存储过程?
【问题讨论】:
Optional Parameters 在 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
【讨论】: