存储过程mysql从每一行返回每个结果列

Posted

技术标签:

【中文标题】存储过程mysql从每一行返回每个结果列【英文标题】:stored procedure mysql returning each result column from each row 【发布时间】:2020-05-01 22:05:42 【问题描述】:

我希望存储过程返回我选择的每一列的值。

我有第 1 列第 2 列和第 3 列的客户表。 我有一个返回 10 行的选择,我想为每一行获取第 1 列、第 2 列和第 3 列的结果。

我该怎么做?

  BEGIN
  DECLARE n INT DEFAULT 0;
  DECLARE i INT DEFAULT 0;
  DECLARE col1 INT DEFAULT 0;
  DECLARE col2 VARCHAR(10) DEFAULT "";
  DECLARE col3 INT DEFAULT 0;
  SELECT COUNT(*) into n FROM customer;
  set i=1;
  WHILE i<=n DO
  SELECT column1 FROM customer WHERE id=i INTO col1;
  SELECT column2 FROM customer WHERE id=i INTO col2;
  SELECT column3 FROM customer WHERE id=i INTO col3;
  SET i = i + 1;
  END WHILE;
  END 

如何获取 col1、col2 和 col3 的每个值以显示并用于下一次处理。

如何在 mysql 中调用这个存储过程?

【问题讨论】:

请您扩展您的倒数第二句话 - 一个简单的选择将显示列,因此我不明白问题是什么或您的下一次治疗是什么意思。 mysql调用过程名称(参数)中的“我如何调用” @P Salmon 在这句话中“我如何让每个值 col1、col2 和 col3 显示它并用于下一次处理。”,我说我想显示 col1 的值,col2 和 col3 。我想看这个内容。我的问题是如何完成我的存储过程并使用参数调用它?如果你有一个想法,你能告诉我吗 我第一条评论的最后一句告诉你如何调用存储过程,这里重复一遍——调用过程名称(参数)——你试过吗?你有问题吗?另见dev.mysql.com/doc/refman/8.0/en/create-procedure.html 【参考方案1】:

保存您可能使用的逻辑

BEGIN
SELECT column1, column2, column3
FROM customer 
WHERE id <= ( SELECT COUNT(*) 
              FROM customer );
END 

【讨论】:

你好@Akina,我用你的建议保存了我的逻辑,我的问题是如何调用这个带有参数的存储过程并显示每行col1 col 2和col3的结果。 @obela06 用参数调用这个存储过程 我没有看到任何参数(或可能是外部参数的东西)。

以上是关于存储过程mysql从每一行返回每个结果列的主要内容,如果未能解决你的问题,请参考以下文章

循环遍历结果行并将列数据存储到存储过程变量mysql中

mysql返回修改后

SQL SERVER里面如何在存储过程里面获取另一个存储过程所返回的表的数据?

SQL SERVER里面如何在存储过程里面获取另一个存储过程所返回的表的数据?

如何通过MyBatis获取mysql存储过程返回的不确定个数的多个结果集

MySQL ODBC 存储过程结果缺少列