如何在mysql中创建具有可选DateTime参数的存储过程



所以存储过程中的参数是可选的,这意味着它们可以为空。我的cade的问题是,无论何时调用SP都没有输出。我需要我的参数也能够接受null

CREATE PROCEDURE `GET`(
in startDate DATETIME,
in endDate DATETIME
)
BEGIN
SELECT * FROM DB.table
WHERE
DB.table.colunm >= startDate
AND
DB.table.colunm  <= endDate;
END
当我调用存储过程时,我从未得到任何结果
call GET(2022-05-28, 2022-05-30)
call GET(null, null)

如果您想在传递null值时检索所有记录,您可以使用IF... ELSE... Statement来确定Stored Procedure将选择什么。

检查以下SP:

CREATE PROCEDURE GETDT(
in startDate DATETIME,
in endDate DATETIME
)
BEGIN
if startDate is null or endDate is null then
SELECT * FROM test;
else
SELECT * FROM test
WHERE
test.sdate >= startDate
AND
test.edate  <= endDate;
end if;
END 

查看db-fiddle的结果

最新更新