繁体   English   中英

MySQL存储过程中的条件WHERE子句

[英]Conditional WHERE clause in MySQL stored procedure

下面是我创建的存储过程的简化示例。

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 ,但这也不对,而且我也失去了语法检查功能。

有什么建议么? 谢谢!

尝试这个:

UPDATE yourtable
SET value = val1
WHERE cond = val2 OR val2 IS NULL

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM