MySQL存储过程变量

时间:2012-03-25 13:58:30

标签: mysql sql stored-procedures

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

  1. 运行SELECT查询,返回包含2列的1行(因此有两条信息)。
  2. 运行INSERT查询,该查询包括返回的前两个值以及传递给存储过程的一些参数。
  3. 我原本以为我可以将步骤1中的两条信息存储到一个变量中,然后将它们传递给第2步。经过一些阅读后,似乎MySQL中的变量只能容纳1个数据。如何将步骤1中的2条信息导入步骤2中的INSERT语句?

    谢谢!

3 个答案:

答案 0 :(得分:2)

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

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

在此处,您从col1选择col2table2,并在结果集中添加2个新的自定义值value1value2。这4个新列将插入table1

答案 1 :(得分:1)

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

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

答案 2 :(得分:0)

创建这样的东西:

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