java - mysql存储过程总是返回参数值= 0

标签 java mysql stored-procedures return return-value

MySql 存储过程

DELIMITER $$

USE `RMS`$$

DROP PROCEDURE IF EXISTS `posHdrTrxEntry`$$

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

IN mbrID INT,
IN usrID INT,
IN unqID VARCHAR(50),

OUT trxID INT
)
BEGIN
DECLARE trxID INT;

INSERT INTO `RMS`.`transaction`
(`MemberID`,`UserID`,`UID`)
VALUES (mbrID,usrID,unqID);

IF  ROW_COUNT() > 0 THEN
SET trxID=(SELECT ID FROM `transaction` WHERE `transaction`.`UID`=unqID);
END IF;

IF trxID > 0 THEN
UPDATE `transaction` SET `transaction`.`UID`=0 WHERE `transaction`.`ID`=trxID;
END IF;

END$$

DELIMITER ;

Java --代码片段

Connection connection = null;
    int trxID;
    try {
        connection = new DbService().getConnection();
 CallableStatement cs = connection.prepareCall("{ CALL posHdrTrxEntry(?,?,?,?) }");
        cs.setString(1, null);
        cs.setInt(2, item.getUserID());
        cs.setString(3, item.getUid());
        cs.registerOutParameter(4, java.sql.Types.INTEGER);
        cs.execute();
        trxID=cs.getInt(4);
        cs.close();

存储过程总是返回参数值=0,即使存储过程最后一条更新语句执行成功

IF trxID > 0 THEN
UPDATE `transaction` SET `transaction`.`UID`=0 WHERE `transaction`.`ID`=trxID;
END IF;

意思是TrxID大于0,为什么我在java中得到的值只有0?

编辑 (图片 View ) enter image description here

最佳答案

亲爱的,只需删除 BEIGN 之后的第一条语句

删除以下内容:

DECLARE trxID INT;

因为这是out参数,你可以直接用SET来赋值。

我认为它会很好用!

关于java - mysql存储过程总是返回参数值= 0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10966695/

相关文章:

java - Web 应用程序为不同的用户提供不同的 URL

mysql - 为什么我会收到以下错误? "Mysql2::Error: closed MySQL connection: SHOW TABLES"

vb.net - 从 SSIS 上的脚本任务执行时,Oracle 过程不返回结果

php - 我应该使用 All-Caps 来执行 MySQL 命令以使其工作吗?

mysql - Mysql 存储过程 BEGIN END

c# - Entity Framework 中所有情况的存储过程返回 -1

java - 正则表达式模式匹配

java - 更改启动 libgdx 应用程序的默认图像

java - Play 1.2.2 - 不再允许标签内的标签吗?

PHP/SQL - 如何获取数据库中表的名称?