gpt4 book ai didi

mysql - 为什么我的存储过程没有为变量设置值?

转载 作者:行者123 更新时间:2023-11-29 21:22:48 28 4
gpt4 key购买 nike

我改变了用 MySQL 制作的存储过程,我声明了两个新变量,然后从 select 命令为它们设置一个值,但它没有从 select 命令获取任何值,我尝试运行相同的 select存储过程之外的语句,它在那里工作正常。为什么 select 命令在存储过程中无法正常工作?

这是 sp 无法正常工作的部分:

DECLARE reorden INT;
DECLARE minimo INT;
...
...
IF (existenciasresta>=0) THEN
SELECT REORDEN FROM productos WHERE ID_PRODUCTO =id INTO reorden;
SELECT MINIMO FROM productos WHERE ID_PRODUCTO = id INTO minimo;
IF (existenciasresta<reorden) THEN
SELECT 'El producto está en su punto de reorden';
ELSEIF (existenciasresta<minimo) THEN
SELECT 'El producto está en su punto mínimo';
END IF;
SET retorno = 1;

运行 sp 后,变量 reorden 和 minimo 设置为 null,当我在查询选项卡中运行此语句时,我得到了正确的值:

 SELECT REORDEN FROM productos WHERE ID_PRODUCTO = '1233333333333';

它正确地传递了 if 条件,因为它正确地将 retorno 设置为 1,所以我真的不知道为什么会这样,任何帮助将不胜感激。

最佳答案

您还可以在列名后写入INTO关键字,该列值放入变量尝试此查询而不是您的选择查询

SELECT REORDEN INTO reorden FROM productos WHERE ID_PRODUCTO =id ;
SELECT MINIMO INTO minimo FROM productos WHERE ID_PRODUCTO = id ;

或者

SET reorden = (SELECT REORDEN FROM productos WHERE ID_PRODUCTO =id);
SET minimo = (SELECT MINIMO FROM productos WHERE ID_PRODUCTO = id) ;

两者都是您希望可以使用的正确查询。

关于mysql - 为什么我的存储过程没有为变量设置值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35644714/

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