mysql 存储过程 输出参数问题

mysql 存储过程,有in,out参数,输入不同的in参数,查询数据库获取表Id char(36)类型,返回。但结果返回的都是相同的值,为什么? 直接执行里面的sql 的到的值是不同的。

eg

-- 存储过程
DELIMITER //
CREATE PROCEDURE GetCustomerId (
  IN name VARCHAR(50),
  OUT customerId CHAR(36)
) 
BEGIN
SELECT  Id into customerId FROM Customer  WHERE Name=name LIMIT 1;
END //
DELIMITER ;
-- 第一次调用
call GetCustomerId('jxm',@id);
select @id;

结果
clipboard.png

直接执行里面的sql 获得的也是同样的Id

但之后再次调用该存储过程,传递的参数不同

call GetCustomerId('wangang',@id);
select @id;

结果 还是
clipboard.png

直接执行sql

SELECT  Id FROM Customer  WHERE Name='wangang' LIMIT 1;

得到的结果为

clipboard.png

阅读 6.1k
1 个回答

存储过程写的有问题,你mysql版本多少!

刚才我试了一下,有个坑,你得找一下,就是name和Name不能一样

drop procedure getId;
delimiter @
create procedure getId(in iName varchar(16), out outId int)
begin
    select id as outId from user where name = iName limit 1;
    select id into outId from user where name = iName limit 1;
end @
delimiter ;

你看我写的,你的存储过程入参名称Name和表的字段name一样了,mysql貌似不区分大小写,这样是有问题的,你把m入参Name换成iName即可。。。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏