【问题标题】:MySQL Stored Procedure variablesMySQL 存储过程变量
【发布时间】:2012-04-09 06:46:33
【问题描述】:

在 MySQL 中,我正在尝试编写一个存储过程,它执行以下操作:

  1. 运行 SELECT 查询,该查询返回 1 行 2 列(即两条信息)。
  2. 运行一个 INSERT 查询,其中包括返回的两个先前值和一些传递到存储过程的参数。

我原本以为我可以将步骤 1 中的两条信息存储到一个变量中,然后将它们传递到步骤 2。经过一番阅读,虽然 MySQL 中的一个变量似乎只能保存一条数据。如何将步骤 1 中的 2 条信息放入步骤 2 中的 INSERT 语句中?

谢谢!

【问题讨论】:

标签: mysql sql stored-procedures


【解决方案1】:

您可以使用INSERT INTO ... SELECT。 例如,

INSERT INTO table1 
SELECT col1, 
       col2, 
       value1, 
       value2 
FROM   table2 

在这里,您从table2 中选择col1、col2,并将两个新的自定义值value1 和value2 添加到结果集中。这新的 4 列被插入到 table1

【讨论】:

    【解决方案2】:

    您可以使用 SELECT ... INTO 子句,它将从指定表中选择值到您在存储过程中定义的变量。

    参考手册:http://dev.mysql.com/doc/refman/5.0/en/select-into.html

    【讨论】:

      【解决方案3】:

      创建这样的东西:

      CREATE PROCEDURE InsertThis(IN paramA varchar(50), IN paramB int, INT paramC varchar(50))
      BEGIN
           INTO INTO tableB(fieldA, fieldB, fieldC, fieldD)
           SELECT paramA as fieldA, paramB as fieldB, fieldC, fieldD
           FROM tableA
           WHERE fieldC = paramC;
      END
      

      【讨论】:

      • Where 这里不需要条件
      • 这只是一个样本兄弟。除了使用LIMIT OP 还可以使用什么来显示 2 行?
      猜你喜欢
      • 1970-01-01
      • 2010-12-18
      • 2014-04-18
      • 1970-01-01
      • 2012-11-29
      • 2016-07-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多