MySQL存储过程不输出正确的值

时间:2015-02-11 22:28:16

标签: mysql stored-procedures

这必须简单,我只是错过了它。我正在尝试运行这样的存储过程;

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;

问题是当运行时它会返回

enter image description here

这对我没有意义。很抱歉试图将MS SQL DB转换为MySQL的简单问题。

2 个答案:

答案 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',不输出输出窗口中的过程。

希望它被清除。