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
我没有得到什么是错在这里我的查询。有没有办法呢?
编辑:
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
位现在它给我靠近“END”语法错误在第21行
为什么会这样呢?
编辑:
得到了解决:
END WHILE;
@ N.B.:我没有找到你? – srahul07
@ srahul07他意味着你从来没有把你的一个问题的答案标记为答案。 –
这意味着您已根据您的个人资料提出了9个问题,并且您没有接受过单个问题的最终答案。 – Jason