我正在尝试从phpmyadmin上的数据库填充一个表,因此我有以下脚本:
USE avi; //database
SET @listOfStates = 'AK, AL, AR, AS, AZ, CA, CO, CT, DC, DE, FL, GA, GU, HI, IA, ID, IL, IN, KS, KY, LA, MA, MD, ME, MI, MN, MO, MP, MS, MT, NC, ND, NE, NH, NJ, NM, NV, NY, OH, OK, OR, PA, PR, RI, SC, SD, TN, TX, UM, UT, VA, VI, VT, WA, WI, WV, WY';
SET @item = SUBSTRING_INDEX(@listOfStates, ',', 1);
SET @itemValue = 0;
CREATE PROCEDURE populate()
BEGIN
SET @strLen = LENGTH(@listOfStates);
label1: LOOP
SET @strLen = LENGTH(@listOfStates);
SET @item = SUBSTRING_INDEX(@listOfStates, ',', 1);
SELECT COUNT(*) INTO @itemValue FROM us_accidents u WHERE u.state LIKE item;
INSERT INTO state_cases (name, cases) VALUES (@item, @itemValue);
SET @SubStrLen = LENGHT(SUBSTRING_INDEX(listOfStates, ',', 1));
SET @listOfStates = MID(listOfStates, SubStrLen, strLen);
IF listOfStates = NULL
LEAVE label1;
ITERATE label1;
END LOOP label1;
END;
当我尝试导入时,我得到了这个
我用set@错了吗?或者是我的程序或是varchar有什么问题?
我提到表已经创建。
1条答案
按热度按时间4bbkushb1#
你的主要问题是你错过了
DELIMITER
在存储过程开始之前。此外,还有
IF
过程末尾的语句格式不正确:语法为IF ... THEN ... END IF;
. 最后,检查是否为空IS NULL
而不是= NULL
.编译成功: