这必须简单,我只是错过了它。我正在尝试运行这样的存储过程;
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;
问题是当运行时它会返回
这对我没有意义。很抱歉试图将MS SQL DB转换为MySQL的简单问题。
答案 0 :(得分:2)
Mysql在SELECT中有点古怪,这句话
select @v1 = 'Value 1';
实际上是一个比较;它将@ v1(默认为NULL)与value 1
进行比较,后者将返回null。如果要分配值,请使用:=
select @v1 := 'Value 1';
或者,使用SET;
SET @v1 = 'Value 1';
答案 1 :(得分:1)
正如我测试的那样,@ d不是代码中用来从过程中获取输出值的任何变量。
但你最后的 select @ v3 ='Value 3'内部程序正在作为控制台的输出。 如您所见,输出为空,但列名为选择@ v3 ='值3',不输出输出窗口中的过程。
希望它被清除。