2017-09-12 5 views
0

table1からcolumn_1、column_2を選択します。ストアドプロシージャの変数に値を追加する

変数にこのcolumn_1とcolumn_2の値が必要なので、別のテーブルに挿入する前に何らかの操作を行うことができます。

は、あなたがのparamsを設定して、あなたも一緒に欲しいものを行うには、このような何かを行うことができ、すべてのヘルプ

+0

変数に複数の行を挿入することはできません。これまで持っていたコードと一緒に何をしようとしているのかを説明するために質問を拡大できますか? –

+0

@ P.Salmon私は別のテーブルに挿入する前にいくつかの操作を行うことができるように変数に列の値を取得しようとしています。 'BEGINは@cat_nameを宣言します。varchar(100); @id intを宣言する。 category_id = v_typeカテゴリから@cat_name = category_name、@ id = last_idを選択します。 END'でもエラーになります。 – mujtaba

+0

宣言された変数は、ストアドプログラム(この場合はプロシージャ)の@で始まらなければなりません。 –

答えて

0
DECLARE @VAR1 INT 
DECLARE @VAR2 INT 

SELECT 
@VAR1 = column_1, 
@VAR2 = column_2 
from Table 

いただきありがとうございます。

+0

このようにしました BEGIN '@ cat_name' varchar(100);を宣言します。 '@ id' intを宣言します。 カテゴリから@cat_name = category_name、@ id = last_idを選択します。category_id = v_type; END しかし、それを保存している間にエラーが発生しています MySQLは言った:#1064 - あなたはSQL構文でエラーがあります。あなたのMySQLサーバのバージョンに対応するマニュアルをチェックし、正しい構文が '@cat_name varchar(100)'の近くで使用されるようにしてください。 @id intを宣言する。 select @cat_name = category_name、@ i 'in line 3 – mujtaba

+0

宣言された変数は、ストアドプログラムでは@で始めることはできません(この場合はプロシージャ) –

0

あなたは本当に上で動作するように多くの情報を与えられていないが、おそらくこのような何かが結果が

MariaDB [sandbox]> call p(); 
+----------+--------+ 
| cat_name | cat_id | 
+----------+--------+ 
| John  |  1 | 
+----------+--------+ 
1 row in set (0.01 sec) 
で呼ばれた場合、ユーザーはこの

MariaDB [sandbox]> select * from users; 
+----+----------+--------------+--------+---------------------+---------------------+--------+-------------+-----------+ 
| id | userName | photo  | status | ts     | events_participated | fb_uid | Column_name | post_type | 
+----+----------+--------------+--------+---------------------+---------------------+--------+-------------+-----------+ 
| 1 | John  | john.png  |  1 | 2016-12-08 13:14:24 |     1 |  1 | 12346  | photo  | 
| 2 | Jane  | jane.png  |  1 | 2016-12-08 13:14:24 |    NULL |  2 | 12346  | photo  | 
| 3 | Ali  |    |  1 | 2016-12-08 13:14:24 |    NULL |  3 | 12346  | photo  | 
| 6 | Bruce | bruce.png |  1 | 2016-12-08 13:14:24 |    NULL |  6 | 12346  | photo  | 
| 7 | Martha |    |  1 | 2016-12-08 13:14:24 |    NULL |  7 | 12346  | photo  | 
| 8 | Sidney |    |  1 | 2016-12-08 13:14:24 |    NULL |  8 | 12346  | photo  | 
| 10 | Charlie | charlie.png |  1 | 2016-12-08 13:14:24 |    NULL |  10 | 12346  | content | 
| 12 | Elisa |    |  1 | 2016-12-08 13:14:24 |    NULL |  12 | 12346  | content | 
| 14 | Samantha | samantha.png |  1 | 2016-12-08 13:14:24 |    NULL |  14 | 12346  | content | 
| 15 | Hannah | hannah.png |  1 | 2016-12-08 13:14:24 |    NULL |  15 | 12346  | content | 
| 16 | Hannah |    |  1 | 2016-12-08 13:14:24 |    NULL |  16 | 12346  | content | 
| 17 | Kevin | kevin1.png |  1 | 2016-12-08 13:14:24 |    NULL |  17 | 12346  | content | 
| 18 | Kevin | kevin2.png |  1 | 2016-12-08 13:14:24 |    NULL |  18 | 12346  | content | 
| 19 | Ruth  |    |  1 | 2016-12-08 13:14:24 |    NULL |  19 | 12346  | content | 
| 20 | xyz  | NULL   | NULL | 2017-08-18 12:54:40 |    NULL | NULL | NULL  | content | 
+----+----------+--------------+--------+---------------------+---------------------+--------+-------------+-----------+ 
15 rows in set (0.01 sec) 

のように見えます

drop procedure if exists p; 
delimiter $$ 

create procedure p() 
BEGIN 
declare cat_name varchar(100); 
declare cat_id int; 
select id,username into cat_id,cat_name 
from users where id= 1; 
select cat_name,cat_id from dual; 

END $$ 
delimiter ; 

を行います