如何在 mysql 中创建带有可选 DateTime 参数的存储过程
How to create a Stored Procedure with Optional DateTime Parameters in mysql
因此存储过程中的参数是可选的,这意味着它们可以为空。我的 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
将 select 的内容。
检查以下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 的结果。
因此存储过程中的参数是可选的,这意味着它们可以为空。我的 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
将 select 的内容。
检查以下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 的结果。