8

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

现在我需要在存储过程中实现该功能。可能吗?如果可能的话,我们如何在 Java 代码中获取该结果集?

现在我已经编写了我的存储过程如下

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

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

4

3 回答 3

2

首先是你应该编写发送参数的 msql 过程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();
于 2012-04-24T09:47:27.507 回答
1

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

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

对于像这样的简单情况,您应该只需要调用getResultSet()一次并处理它。

于 2012-04-24T09:05:50.623 回答
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
于 2012-04-24T09:03:27.267 回答