use*_*790 1 java mysql sql stored-procedures
我有一个mysql存储过程.
DELIMITER //
CREATE PROCEDURE GetRecordsByAge(IN Age INT)
BEGIN
SELECT * FROM test1 WHERE age = Age;
END //
DELIMITER ;
Run Code Online (Sandbox Code Playgroud)
当我通过java运行这个存储过程然后它给出了表的所有记录.
但如果我在select语句中有条件.为什么会这样?
这是我的代码行: -
CallableStatement cStmt = null;
cStmt = con.prepareCall("{ CALL GetSpecificRecord(?) }");
cStmt.setInt(1, 25);
cStmt.execute();
ResultSet rs1 = cStmt.getResultSet();
Run Code Online (Sandbox Code Playgroud)
当我打印此结果集时,这将给出表的所有记录.
问题出在哪儿?
谢谢
Joh*_*Woo 10
获取所有记录的原因是列名冲突导致WHERE子句始终为true.更改与您要比较的列的名称不同的参数名称,
DELIMITER //
CREATE PROCEDURE GetRecordsByAge(IN _Age INT)
BEGIN
SELECT * FROM test1 WHERE age = _Age;
END //
DELIMITER ;
Run Code Online (Sandbox Code Playgroud)
第二个是,您正在调用不同的存储过程.而不是GetRecordsByAge,你在呼唤GetSpecificRecord.
| 归档时间: |
|
| 查看次数: |
325 次 |
| 最近记录: |