[英]OUT Parameter Error in Calling MySQL Stored Procedure from Java (Eclipse)
I am trying to call a MySql stored procedure from the Java code in Eclipse but I get the following error. 我试图从Eclipse中的Java代码调用MySql存储过程,但是出现以下错误。 The stored procedure compiled without any error.
存储过程已编译,没有任何错误。
Import statements: 导入语句:
import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Types;
Here's the java code snippet: 这是Java代码段:
>cStmt = (CallableStatement) conn.prepareCall("{ call getEmpName(?,?)}");
>cStmt.setString(1, "xxxyyyzzz");
>cStmt.registerOutParameter(2, Types.INTEGER);
>cStmt.execute();
Given below is the Stored procedure 下面给出的是存储过程
>USE `mcaSchema`;
>DROP procedure IF EXISTS `getEmpName`;
>DELIMITER $$
>USE `mcaSchema`$$
>CREATE DEFINER=`root`@`localhost` PROCEDURE `getEmpName`(IN empID int,OUT eName varchar(30))
>BEGIN
>> select ename from mcaSchema.emp where empno = empID;
>END$$
>DELIMITER ;
Please help me figure out what wrong I am doing. 请帮助我弄清楚我在做什么错。 Pardon me if it seems a lil' naive.
如果这看起来有点天真,请原谅我。 I've looked around for solution, but haven't been able to resolve it .
我一直在寻找解决方案,但尚未解决。 ...
...
Try: 尝试:
/* CODE FOR DEMONSTRATION PURPOSES */
DROP PROCEDURE IF EXISTS `getEmpName`;
DELIMITER $$
CREATE PROCEDURE `getEmpName`(IN `empID` VARCHAR(30), OUT `eName` VARCHAR(30))
BEGIN
SELECT CONCAT('NAME: ' , `empID`) INTO `eName`;
END$$
DELIMITER ;
/* CODE FOR DEMONSTRATION PURPOSES */
/* CODE FOR DEMONSTRATION PURPOSES */
...
cStmt = con.prepareCall("{ call `getEmpName`(?, ?) }");
cStmt.setString(1, "MYNAME");
cStmt.registerOutParameter(2, Types.VARCHAR);
boolean hadResults = cStmt.execute();
while (hadResults) {
rs = cStmt.getResultSet();
hadResults = cStmt.getMoreResults();
}
String outputValue = cStmt.getString(2);
...
/* CODE FOR DEMONSTRATION PURPOSES */
UPDATE 更新
DROP PROCEDURE IF EXISTS `getEmpName`;
DELIMITER $$
CREATE PROCEDURE `getEmpName`(IN `p_empID` INT, OUT `p_eName` VARCHAR(30))
BEGIN
SELECT `ename` INTO `p_eName`
FROM `mcaSchema`.`emp`
WHERE `empno` = `p_empID`;
END$$
DELIMITER ;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.