存储过程String参数对于某些参数返回null

时间:2018-07-08 05:11:24

标签: mysql stored-procedures

我已经在MySQL中创建了一个新的存储过程,

DELIMITER $$

    CREATE DEFINER=`root`@`localhost` PROCEDURE `getEmpById`(IN empId INT, 
   OUT empSal DOUBLE, out empName varchar(45))
BEGIN

 select salary,empname into  empSal,empName from employee where empno=empId;

END 

在MySQL工作台和表结构中是 enter image description here

但是在执行时

call getEmpById(1,@empSal,@empName);
select @empSal,@empName;

它返回结果,但它仅返回empSal的值,而不返回empName的值,也不会返回其他值的值

我的出场就像

|@empName |@empSal |
--------------------
|null     |55500   |

1 个答案:

答案 0 :(得分:0)

我自己找到了解决方法,

     select salary,empname into  empSal,empName from employee

在存储过程中,我将列名empname映射到empName,这就是为什么我得到null值作为输出的原因

在存储过程中,不能与parameter name一样使用column name

将参数empname更改为ename后,我得到了想要的正确结果。