我有一张名为employee的表,其中包含他的ID,姓名,电话号码。我使用MySQL作为我的数据库。我正在使用Java Swing。我正在使用Java搜索带有名称的employee表(我在Java页面中使用了like
子句)。
现在我需要在存储过程中实现该功能。可能吗?如果可能的话,我们怎样才能在Java代码中使用结果集?
现在我编写了我的存储过程,如下所示
BEGIN
SELECT * FROM employee where empName like '%su%'
END
示例代码将不胜感激.. 感谢
答案 0 :(得分:1)
执行存储过程时,如果它执行多个语句,它实际上可能会返回多个ResultSet对象和/或更新计数。
您使用CallableStatement
执行proc,然后使用getResultSet()
或getUpdateCount()
来获得正确的结果。对于多个结果集/语句,您可以调用getMoreResults()
来浏览存储过程的结果。
对于这样的简单案例,您只需要调用getResultSet()
一次并处理它。
答案 1 :(得分:1)
首先,您应该编写为LIKE
,
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();
答案 2 :(得分:0)
是的,你可以。存储过程甚至可以返回多个结果集。
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