[英]how to run mysql stored procedure using java
我有一个mysql存储过程。
DELIMITER //
CREATE PROCEDURE GetRecordsByAge(IN Age INT)
BEGIN
SELECT * FROM test1 WHERE age = Age;
END //
DELIMITER ;
当我通过Java运行此存储过程时,它将给出表的所有记录。
但是,如果我在select语句中有条件。 为什么会这样呢?
这是我的代码集:
CallableStatement cStmt = null;
cStmt = con.prepareCall("{ CALL GetSpecificRecord(?) }");
cStmt.setInt(1, 25);
cStmt.execute();
ResultSet rs1 = cStmt.getResultSet();
当我打印此结果集时,它将给出表格的所有记录。
问题出在哪儿?
谢谢
获取所有记录的原因是由于列名冲突导致WHERE
子句始终为true。 更改与要比较的列名称不同的参数名称,
DELIMITER //
CREATE PROCEDURE GetRecordsByAge(IN _Age INT)
BEGIN
SELECT * FROM test1 WHERE age = _Age;
END //
DELIMITER ;
第二个是,您正在调用不同的存储过程。 您正在调用GetSpecificRecord
而不是GetRecordsByAge
。
因为条件WHERE age = Age
总是正确的。
将参数名称Age
更改为其他名称:
DELIMITER //
CREATE PROCEDURE GetRecordsByAge(IN AgeParam INT)
BEGIN
SELECT * FROM test1 WHERE age = AgeParam;
END //
DELIMITER ;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.