存储过程可以返回结果集吗?
我有一张名为employee的表,里面有他的id,姓名,电话号码。 我使用MySQL作为我的数据库。 我正在使用Java Swing。 我正在使用Java搜索员工表名称(我在Java页面中使用了like
子句)。
现在我需要在存储过程中实现该function。 可能吗? 如果有可能的话,我们怎样才能在Java代码中使用结果集?
现在我编写了我的存储过程如下
BEGIN SELECT * FROM employee where empName like '%su%' END
示例代码将不胜感激..谢谢
首先,你应该编写为LIKE
发送参数的msql程序,
CREATE PROCEDURE simpleproc (param1 CHAR(20)) BEGIN SELECT * FROM employee where empName like param1; END
然后从java程序中你可以使用这段代码来使用程序,
CallableStatement cstmt = con.prepareCall("{call simpleproc(?)}"); cstmt.setString(1, "%su%"); ResultSet rs = cstmt.executeQuery();
执行存储过程时,如果它执行多个语句,它实际上可能会返回多个ResultSet对象和/或更新计数。
您使用CallableStatement
执行proc,然后使用getResultSet()
或getUpdateCount()
来获取正确的结果。 对于多个结果集/语句,您可以调用getMoreResults()
来遍历存储过程的结果。
对于这样的简单情况,您只需要调用getResultSet()
一次并处理它。
是的你可以。 存储过程甚至可以返回多个结果集。
DELIMITER $$ -- recognized by mysql client but not phpmyadmin CREATE PROCEDURE prc_test() BEGIN SELECT * FROM employee WHERE empName LIKE '%su%'; END; $$ DELIMITER ; CALL prc_test(); -- to call