2012-03-26 17 views
3

テーブルから複数の値を選択するためにストアドプロシージャを作成し、それぞれの値を2つのパラメータとともに別のテーブルの新しい行に挿入します。関数に渡されます。選択ステートメントとパラメータから値を挿入するmysqlストアドプロシージャ

私が見つけることができるすべてのドキュメントは、選択した結果を挿入する方法を示し、選択された結果をパラメータとともに挿入するのではなく、それを知りたい構文です。上記の擬似コード値cがSELECT文から検索が、aとbの値は、ストアドプロシージャの引数から来ているに

function (a, b) 

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

。 selectステートメントは複数の値を返すことがあります。

だから我々が持っているテーブルに言うことができます:その後、私は、ストアドプロシージャを呼び出す

ID C
1リンゴ
2オレンジ
3梨

procedure(recipe, book) 

新しいテーブルに表示されます:

のid ABC
1レシピ本のリンゴ
2レシピブックオレンジ
3レシピブックナシ

答えて

3

[OK]を、あなたがaを理解し、bがテーブルから値ではありませんので、私は手順としてそれを書き換えます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'); 
+0

これにより、行ではなく新しい列に追加されます。 – Sam

+0

「新しい列は行ではありません」という意味は分かりませんが、ストアドプロシージャとして書き直して、aとbがパラメータとして提供されていることをよく理解しています。 –

関連する問題