我来自前端背景,我正在尝试编写一个可以接受空参数的存储过程。这是一个简化版本:
CREATE PROCEDURE get_item(IN item_id INT(11))
BEGIN
SELECT * FROM item a WHERE a.item_id = IF(item_id IS NULL, a.item_id, item_id);
END;;
因此,SELECT
如果item_id
为空,我希望所有内容,否则,我希望该WHERE
子句适用。这是这样做的方法吗?它似乎有效,但我不确定是否有更好的方法。
我想我也可以这样写:
SELECT * FROM item a WHERE ((item_id IS NULL) OR (a.item_id = item_id));