gpt4 book ai didi

在存储过程中调用时,MYSQL SELECT 语句返回 null

转载 作者:太空宇宙 更新时间:2023-11-03 11:28:37 25 4
gpt4 key购买 nike

您好,我正在尝试创建一个包含选择语句的简单过程:

DELIMITER //
CREATE PROCEDURE testProcedure(OUT login_id VARCHAR(30))
BEGIN
SELECT LOGIN_ID INTO login_id FROM USER_REG_MST WHERE USER_MOBILE_NO = 123;
END//
DELIMITER ;

在程序外部调用时,select 语句独立返回一个值,但在存储过程内部调用 select 时,它返回 null。

SELECT LOGIN_ID INTO login_id FROM mystrodb.USER_REG_MST WHERE USER_MOBILE_NO = 123;

给我一​​个值。但是,

CALL testProcedure(@out);

SELECT @out;

返回 NULL。

注意:列的类型为 VARCHAR(30)(附加信息)

最佳答案

问题是对于 MySQL LOGIN_IDlogin_id 是同一个变量,所以不建议将参数和变量命名为它们的对象或实体(表)的名称、列等),请参阅 C.1 Restrictions on Stored Programs :: Name Conflicts within Stored Routines .

几个选项:1) 更改存储过程的输出参数的名称。 2) 在 LOGIN_ID 列中包含一个限定符,参见 9.2.1 Identifier Qualifiers .

...
SELECT `USER_REG_MST`.`LOGIN_ID` INTO `login_id` ...
...

参见 dbfiddle .

关于在存储过程中调用时,MYSQL SELECT 语句返回 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51917191/

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