mysql存储过程 设置out 参数,MySQL存储过程:OUT参数未设置

我在MySQL中有一个存储过程,该存储过程从表中获取下一个唯一ID,用作其他2个表的ID(我确定这不是最好的方法,但是我正在修改其他人的代码这里).步骤如下:

DELIMITER $$

CREATE DEFINER=`root`@`%` PROCEDURE `GetNextID`( OUT id bigint )

BEGIN

DECLARE uid VARCHAR(255);

SET uid = uuid();

INSERT INTO `ident_column_generator` (u) VALUES (uid);

SELECT ID INTO id FROM `ident_column_generator` WHERE u = uid;

DELETE FROM `ident_column_generator` WHERE u = uid;

END$$

当我从MySQL Workbench调用该过程时:

CALL GetNextID( @id );

SELECT @id;

@id为NULL.我无法解决出了什么问题?即使我运行SET @id = 0;在调用该过程之前,此过程最终以NULL结尾.如果我从MySQL Workbench手动调用过程中的函数,则@id可以很好地输出,例如:

SET @uid = uuid();

INSERT INTO `ident_column_generator` (u) VALUES (@uid);

SELECT ID INTO @id FROM `ident_column_generator` WHERE u = @uid;

DELETE FROM `ident_column_generator` WHERE u = @uid;

SELECT @id;

这会将@id输出为有效数字.

有什么想法为什么id设置不正确?

解决方法:

通常,在此上花了3个小时,然后在发布问题后才发现问题.因此,以供将来参考:在涉及变量的地方,MySQL似乎不区分大小写. ID列名称和id变量显然完全混淆了它.

我将过程的输入参数名称更改为retId,然后运行良好.

标签:mysql-workbench,mysql

来源: https://codeday.me/bug/20191123/2064446.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值