MySQL 存储过程未输出正确的值
MySQL Stored Procedure not outputting correct value
这必须很简单,我只是想念它。我正在尝试 运行 这样的存储过程;
DELIMITER $$
DROP PROCEDURE IF EXISTS Testing$$
CREATE PROCEDURE `Testing`(out d varchar(10))
BEGIN
select @v1 = 'Value 1';
select @v2 = 'Value 2';
select @v3 = 'Value 3';
set d = @v1;
END$$
DELIMITER ;
call Testing(@d);
select d;
问题是当 运行 是 returns
这对我来说毫无意义。很抱歉尝试将 MS SQL 数据库转换为 MySQL.
的简单问题
正如我所测试的那样,@d 不是您用于从过程中获取输出值的代码中的任何变量。
但是你的最后一个 select @v3 = 'Value 3' 内部程序正在作为控制台的输出。
如您所见,输出为空,但列名是 select @v3 = 'Value 3' 而不是输出 window.
希望它被清除。
Mysql有点古怪SELECT,这个说法
select @v1 = 'Value 1';
实际上是一个比较;它将默认情况下为 NULL 的 @v1 与 value 1
进行比较,这将 return null.If 您要分配的值使用 :=
select @v1 := 'Value 1';
或者,使用 SET;
SET @v1 = 'Value 1';
这必须很简单,我只是想念它。我正在尝试 运行 这样的存储过程;
DELIMITER $$
DROP PROCEDURE IF EXISTS Testing$$
CREATE PROCEDURE `Testing`(out d varchar(10))
BEGIN
select @v1 = 'Value 1';
select @v2 = 'Value 2';
select @v3 = 'Value 3';
set d = @v1;
END$$
DELIMITER ;
call Testing(@d);
select d;
问题是当 运行 是 returns
这对我来说毫无意义。很抱歉尝试将 MS SQL 数据库转换为 MySQL.
的简单问题正如我所测试的那样,@d 不是您用于从过程中获取输出值的代码中的任何变量。
但是你的最后一个 select @v3 = 'Value 3' 内部程序正在作为控制台的输出。 如您所见,输出为空,但列名是 select @v3 = 'Value 3' 而不是输出 window.
希望它被清除。
Mysql有点古怪SELECT,这个说法
select @v1 = 'Value 1';
实际上是一个比较;它将默认情况下为 NULL 的 @v1 与 value 1
进行比较,这将 return null.If 您要分配的值使用 :=
select @v1 := 'Value 1';
或者,使用 SET;
SET @v1 = 'Value 1';