gpt4 book ai didi

mysql - 在 MySQL 存储过程中的 WHERE 子句中使用 IN 参数

转载 作者:行者123 更新时间:2023-11-29 10:22:07 25 4
gpt4 key购买 nike


我正在使用 MySQL 和 HeidiSQL,我想创建一个存储过程,它接受一个字符串参数并返回一个表。这是我尝试过的:

CREATE PROCEDURE sp(IN in_param VARCHAR(50))
BEGIN
SELECT * FROM fact_table ft
WHERE ft.param = @in_param
END

我这样调用它:

CALL sp('string_param');

该过程返回一个空表,因为 @in_param 在 SP 内以某种方式为 NULL

我也喜欢这样:WHERE ft.param = in_param,但是当我运行它时出现错误,说SQL Error (1054): Unknown column 'in_param' in ' where 子句'

有人可以告诉我我做错了什么吗?

PS:我尝试手动创建它,并使用 Heidi 的“创建新 -> 存储例程向导”

最佳答案

我终于找到了一个有效的解决方案:

CREATE PROCEDURE sp(IN in_param VARCHAR(50))
BEGIN
DECLARE declared_in_param CHAR(50);
SET declared_in_param = in_param;
SELECT * FROM fact_table ft
WHERE ft.param = declared_in_param;
END

因此,我们的想法是为该 IN 参数声明并设置一个新变量,然后在 SELECT 语句的 WHERE 子句中使用该声明的变量。

我还没有时间研究为什么这有效,但我会

关于mysql - 在 MySQL 存储过程中的 WHERE 子句中使用 IN 参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49066143/

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