mysql out返回结果_Mysql存储过程OUT变量返回NULL

我在我的应用程序中使用下面的示例存储过程:

DELIMITER $$

DROP PROCEDURE IF EXISTS `test`.`sp_item`$$

CREATE DEFINER=`root`@`localhost` PROCEDURE `sp_item`(

IN name VARCHAR(255),

OUT item_id INT(11)

)

BEGIN

DECLARE item_id INT DEFAULT 0;

START TRANSACTION;

INSERT INTO `item` (`name`) VALUES(name);

SET @item_id := LAST_INSERT_ID();

COMMIT;

END$$

DELIMITER ;

当我执行此程序时使用: –

CALL sp_item("TEST1",@item_id);

并使用以下方法获取最后插入的ID: –

SELECT @item_id;

然后我得到NULL,但是记录成功插入到数据库中.

谷歌搜索后我找不到任何相关的帮助.

我在这里缺少什么?

解决方法:

您没有使用out参数(item_id).相反,您正在提供具有类似名称的本地变量(@item_id).试试这个:

CREATE PROCEDURE `sp_item`(

IN name VARCHAR(255),

OUT item_id INT(11)

)

BEGIN

START TRANSACTION;

INSERT INTO `item` (`name`) VALUES(name);

SET item_id := LAST_INSERT_ID();

COMMIT;

END$$

标签:mysql,stored-procedures

来源: https://codeday.me/bug/20190901/1782863.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值