Java 如何创建一个存储过程,通过客户端应用程序在具有给定参数的表中搜索记录并返回找到的行数据?

Java 如何创建一个存储过程,通过客户端应用程序在具有给定参数的表中搜索记录并返回找到的行数据?,java,mysql,stored-procedures,netbeans,Java,Mysql,Stored Procedures,Netbeans,我正在尝试创建一个存储过程,客户端应用程序将使用该存储过程在customers表中搜索客户,然后返回有关找到客户的所有信息。我创建了一个将客户添加到表中的过程: DELIMITER $ CREATE PROCEDURE `add_cust` (IN custF VARCHAR(100), IN custL VARCHAR(100)) BEGIN INSERT INTO customers (cFirst, cLast) VALUES(custF, custL); END $ 它是有效

我正在尝试创建一个存储过程,客户端应用程序将使用该存储过程在
customers
表中搜索客户,然后返回有关找到客户的所有信息。我创建了一个将客户添加到表中的过程:

DELIMITER $

CREATE PROCEDURE `add_cust` (IN custF VARCHAR(100), IN custL VARCHAR(100))
BEGIN
    INSERT INTO customers (cFirst, cLast) VALUES(custF, custL);
END $
它是有效的

我的
customers
表非常简单-一个自动递增的主键、fist和last name列

我不能对另一个
search
过程耿耿于怀。在我看来,有两个搜索过程。一个过程使用
名字
搜索客户,第二个过程将使用
姓氏

我假设我必须使用一个游标
WHERE
子句来选择
,并使用
WHILE
循环。但是如何将结果返回到客户端应用程序?我是否将存储过程中的一个参数声明为
OUT
?或者我只是将一个参数声明为INOUT

到目前为止,这就是我所处的位置:

DELIMETER $

CREATE PROCEDURE `searchCustByFirst` (IN custF VARCHAR(100))
BEGIN

END $
很简单-

CREATE PROCEDURE searchCustByFirst(IN custF VARCHAR(100))
BEGIN
  SELECT cFirst, cLast FROM customers WHERE cFirst = custF;
END
此过程将返回数据集,只需在应用程序中读取它

另一个解决方案是使用OUT参数,例如-

CREATE PROCEDURE searchCustByFirst(IN custF VARCHAR(100), OUT custL VARCHAR(100))
BEGIN
  SELECT cLast INTO custL FROM customers WHERE cFirst = custF;
END

在这种情况下,SELECT语句不能返回多个记录,因此条件字段
cFirst
应该是唯一的。

第一种解决方案需要多语句连接才能从存储过程返回结果集。只是为了让询问者知道如何设置选项。。。