0
私は、テーブルpanel_userに行を挿入するには、以下のストアドプロシージャを作成しました:mysqlのストアドプロシージャ
CREATE PROCEDURE panel_users()
BEGIN
DECLARE i INTEGER;
DECLARE user_id BIGINT(20);
DECLARE panel_id BIGINT(20);
DECLARE wt DECIMAL(10,6);
DECLARE level DECIMAL(6,2);
DECLARE total INTEGER;
SET i=1;
SELECT COUNT(*) INTO total FROM smartmeter_usage.users_reporting;
WHILE i<=total DO
SELECT u.userId INTO user_id, p.panelId INTO panel_id, ur.usage_percent INTO level, ipr.wt_base INTO wt
FROM mondrainusage.user_d u
INNER JOIN smartmeter_usage.imei_phone_reporting ipr ON u.imeiNumber = ipr.IMEI
INNER JOIN smartmeter_usage.users_reporting ur ON ur.mobile_number = ipr.mobile_number
INNER JOIN smartmeter_usage.panel pn ON pn.panel_id = ur.panel_id
INNER JOIN mondrainusage.panel p ON p.panelName = pn.panel_name
WHERE u.userId = i;
INSERT INTO mondrainusage.panel_user (panelId, userId, userWeight, usageLevel) VALUES(panel_id, user_id, wt, level);
SET i = i+1;
END WHILE
END
私は、次のようなエラーになっています:
Undeclared variable: p
を私がここで間違っているものを得るわけではありません私の質問。そこから道がありますか?
EDIT:
K Iは、上記の問題の解決策を得ました。
CREATE PROCEDURE panel_users()
BEGIN
DECLARE i INTEGER;
DECLARE user_id BIGINT(20);
DECLARE panel_id BIGINT(20);
DECLARE wt DECIMAL(10,6);
DECLARE level DECIMAL(6,2);
DECLARE total INTEGER;
SET i=1;
SELECT COUNT(*) INTO total FROM smartmeter_usage.users_reporting;
WHILE i<=total DO
SELECT u.userId, p.panelId, ur.usage_percent, ipr.wt_base INTO user_id, panel_id, level, wt
FROM mondrainusage.user_d u
INNER JOIN smartmeter_usage.imei_phone_reporting ipr ON u.imeiNumber = ipr.IMEI
INNER JOIN smartmeter_usage.users_reporting ur ON ur.mobile_number = ipr.mobile_number
INNER JOIN smartmeter_usage.panel pn ON pn.panel_id = ur.panel_id
INNER JOIN mondrainusage.panel p ON p.panelName = pn.panel_name
WHERE u.userId = i;
INSERT INTO mondrainusage.panel_user (panelId, userId, userWeight, usageLevel) VALUES(panel_id, user_id, wt, level);
SET i = i+1;
END WHILE
END
ビットは、今ではライン21
で私に「終了」の近くに構文エラーを与えているのはなぜこれがそうである:ここでの解決策はありますか?
EDIT:
ソリューションを手に入れた:ここ
END WHILE;
@ N.B:私はあなたを得ていませんか? – srahul07
@ srahul07あなたは答えとしてあなたの質問の1つに答えを記したことはありません。 –
あなたのプロフィールに基づいて9つの質問をしたことを意味し、あなたは1つの質問に対して最終回答を受け入れていません。 – Jason