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

标签 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表非常简单——一个自动递增的主键、拳头和姓氏列。

我无法理解另一个搜索过程。我的看法是有两个搜索过程。一个过程使用名字来搜索客户,第二个过程将使用姓氏

我假设我必须使用带有 WHERE 子句的游标 FOR SELECTWHILE 循环。但是如何将结果返回给客户端应用程序呢?我是否将存储过程中的参数之一声明为 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/

相关文章:

java - 使用 JavaPlot/Gnuplot 进行 3D 绘图

java - 触摸监听器不工作

java - 从命令行编译并运行 Java

PHP UPDATE 'name' 中的未知列 'field list'

带子查询的 MySql 更新语句

mysql - 如何将 "array"的值传递给我的存储过程?

java - 翻转 MigLayout 中的行和列?

php - 我如何获得通过与 Laravel 5/Eloquent 的两个多对多关系关联的不同类别列表?

mysql - 获取错误到 : MySQL stored procedure with parameters in Access frontend via VBA

oracle - 如何将 Oracle 过程的参数默认值设置为选择结果?