gpt4 book ai didi

如果参数为空,则 MySQL 存储过程会跳过 WHERE 条件

转载 作者:行者123 更新时间:2023-11-29 01:11:40 27 4
gpt4 key购买 nike

我正在编写应该根据几个过程参数搜索记录的存储过程。问题是并非所有参数都必须传递,有时它们可​​能被设置为 NULL。

有没有办法写出这样的东西?

CREATE PROCEDURE testProc(IN p_idWorker INTEGER, IN p_idEffect INTEGER)
BEGIN
SELECT
*
FROM
CallHistory
WHERE
idWorker = IFNULL(p_idWorker, ANYTHING)
AND
idEffect = IFNULL(p_idEffect, ANYTHING);
END$$

最佳答案

像这样:

 ...
WHERE (p_idWorker IS NULL OR idWorkder = p_idWorker)
AND (p_idEffect IS NULL OR idEffect = p_idEffect);

或者,就像您所做的那样,但不是 Anything,而是像这样使用列名:

   ...
WHERE
idWorker = IFNULL(p_idWorker, idWorker )
AND
idEffect = IFNULL(p_idEffect, idEffect );

关于如果参数为空,则 MySQL 存储过程会跳过 WHERE 条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13797681/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com