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
应该是唯一的。第一种解决方案需要多语句连接才能从存储过程返回结果集。只是为了让询问者知道如何设置选项。。。