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

MySQL存储过程未输出正确的值,mysql,stored-procedures,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 ;

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

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时遇到了一个简单的问题。

正如我所测试的那样,@d不是代码中的任何变量,您使用它从过程中获取输出值

但您的最后一个选择@v3='Value 3'内部过程作为控制台的输出工作。 正如您所看到的,输出为null,但列名为select@v3='Value 3'不是输出窗口中过程的输出


希望它被清除。

Mysql在SELECT中有点古怪

select @v1 =  'Value 1';
其实是一种比较,;它将@v1(默认为NULL)与
值1
进行比较,后者将返回NULL。如果要分配值,请使用:=

select @v1 :=  'Value 1';
或者,使用SET

SET @v1 =  'Value 1';