gpt4 book ai didi

mysql - 将查询编辑为存储过程

转载 作者:行者123 更新时间:2023-11-30 00:02:21 25 4
gpt4 key购买 nike

我有一个存储过程要在 MySQL 中调用,它接收 3 个参数。其中任何一个都可以为空。现在,如果它们为空,我必须运行一个开放查询(没有 where 语句),如果它们不是,我必须对收到的值应用约束。我在这里给你我的代码;)

DELIMITER ;;
CREATE PROCEDURE `getPeople`(
IN p_startDate DATE,
IN p_endDate DATE,
IN p_name TEXT
)
BEGIN
SELECT * FROM people;
-- if p_startDate is not null, 'append' to the query "WHERE birthdate >= p_startDate"
-- if p_endDate is not null, 'append' to the query "WHERE birthdate <= p_endDate"
-- if p_name is not null, 'append' to the query "WHERE name = p_name"
END;;
DELIMITER ;

我的第一种方法是编写 3 个不同的查询,但我不能混合它们(例如:p_startDate 和 p_endDate 不为空,我只想执行 1 个查询)。你能给我一些启发吗?

非常感谢。

最佳答案

我相信准备好的语句将是在 MySQL 中实现此目的的方法(您可以使用动态 SQL 在 SQL Server 中实现此目的)

看这里:

SQL Syntax for Prepared Statements

您可以将不带 where 子句的主语句放入一个变量中,然后使用所需的任何逻辑将所需的 where 子句附加到该字符串上,然后准备并执行该查询。

上面的页面提供了一些示例,您应该能够对其进行调整以满足您的需求。

关于mysql - 将查询编辑为存储过程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24912156/

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