下面是我创建的存储过程的简化示例。
DELIMITER //
CREATE PROCEDURE test (IN val1 INT, IN val2 INT)
BEGIN
UPDATE TABLE SET value=val1 WHERE cond=val2;
END //
DELIMITER ;
现在,假设我想让条件成为可选的。我可以通过在调用过程时将val2
设置为NULL
然后使用IF
语句来使用条件(如果值不是NULL
)来执行此操作。 (在我的情况下,可以安全地假设cond=NULL
不是检查的有效条件。)
这样可行,但我所拥有的UPDATE
查询要复杂得多,复制它似乎很不幸只是为了使条件可选。我可以动态构造查询字符串并传递给EXECUTE
,但这也感觉不对,我会丢失语法检查。
有什么建议吗?谢谢!
答案 0 :(得分:6)
试试这个:
UPDATE yourtable
SET value = val1
WHERE cond = val2 OR val2 IS NULL