mysql存储过程从select语句和参数中插入值

时间:2012-03-26 14:42:28

标签: mysql sql stored-procedures subquery

我正在编写一个存储过程来从表中选择多个值,然后将每个值插入另一个表中的新行以及传递给函数的两个参数。

我能找到的所有文档都显示了如何插入选中的结果,而不是插入与参数一起选择的结果,这是我想知道的语法。

function (a, b)

select c from table
 for each result, 
    insert (a,b,c) into newtable (a,b,c)

在上面的伪代码中,从select语句中检索值c,但a和b的值来自存储过程参数。 select语句可能会返回多个值。

我们在表格中说:

id c
1个苹果
2橙色
3梨

然后我调用存储过程:

procedure(recipe, book)

然后我们会在newtable中看到:

id a b c
1食谱书苹果
2食谱书橙色
3食谱书梨

1 个答案:

答案 0 :(得分:3)

好的,我会将其重写为一个程序,以便您理解ab不是表table中的值:

CREATE PROCEDURE procedure(IN paramA VARCHAR(50), IN paramB VARCHAR(50)) 
     BEGIN 
        INSERT INTO newtable
        SELECT paramA, paramB, c
        FROM table
     END;

所以,在你的例子中,你会这样称呼它:

CALL procedure('recipe','book');