【发布时间】:2017-06-05 06:56:44
【问题描述】:
我只是创建了一个接受 2 个输入并给出 2 个输出的过程。
当我单独运行查询时,它会给我正确的输出,但是如果我尝试调用过程它会产生我 null 结果
在调用查询时:
SELECT field1, field2
INTO @var1, @var2
FROM MyTable ID=? and Name=?
然后:
select @var1, @var2;
但如果我在程序中组合相同的代码,它将为两个字段提供null。
程序:
DELIMITER $$
CREATE DEFINER=`user`@`localhost` PROCEDURE `My_Proc`(
IN `ID` INT,
IN `Name` VARCHAR(20)
-- OUT `result` INT,
-- OUT `result1` INT
)
BEGIN
set @var1 = 0;
set @var2 = 0;
set @query := CONCAT("SELECT
field1, field2
INTO @var1, @var2
FROM MyTable ID=? and Name=?");
PREPARE stmt FROM @query;
Execute stmt USING @Id,@Name;
DEALLOCATE PREPARE `stmt`;
select @var1,@var2;
END
我尝试在程序外部调用select @var1,@var2;,但它也给出了空字段。
我正在使用 Mysql Workbench 6.0
【问题讨论】:
-
从字段 1 和字段 2 中删除动态查询中的单引号,并在 id = 之前使用 where 子句?
-
@AnkitAgrawal,在实际查询中没有引用的地方,我在创建演示代码时错误地添加了。
-
看下面我的回答
标签: mysql stored-procedures mysql-workbench