我正在尝试创建一个存储过程,客户端应用程序将使用该存储过程在 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
表非常简单——一个自动递增的主键、拳头和姓氏列。
我无法理解另一个搜索
过程。我的看法是有两个搜索过程。一个过程使用名字
来搜索客户,第二个过程将使用姓氏
。
我假设我必须使用带有 WHERE
子句的游标 FOR SELECT
和 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
应该是唯一的。
关于java - 如何创建一个存储过程,由客户端应用程序在具有给定参数的表中搜索记录并返回找到的行数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9928236/