存储过程可以返回结果集吗?

时间:2012-04-24 08:53:34

标签: java mysql swing

我有一张名为employee的表,其中包含他的ID,姓名,电话号码。我使用MySQL作为我的数据库。我正在使用Java Swing。我正在使用Java搜索带有名称的employee表(我在Java页面中使用了like子句)。

现在我需要在存储过程中实现该功能。可能吗?如果可能的话,我们怎样才能在Java代码中使用结果集?

现在我编写了我的存储过程,如下所示

BEGIN
     SELECT * FROM employee where empName like '%su%'
END

示例代码将不胜感激.. 感谢

3 个答案:

答案 0 :(得分:1)

执行存储过程时,如果它执行多个语句,它实际上可能会返回多个ResultSet对象和/或更新计数。

您使用CallableStatement执行proc,然后使用getResultSet()getUpdateCount()来获得正确的结果。对于多个结果集/语句,您可以调用getMoreResults()来浏览存储过程的结果。

对于这样的简单案例,您只需要调用getResultSet()一次并处理它。

答案 1 :(得分:1)

首先,您应该编写为LIKE

发送参数的sql过程
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