什么';这个MYSQL查询有什么问题?
MySQL中的什么';这个MYSQL查询有什么问题?,mysql,stored-procedures,Mysql,Stored Procedures,MySQL中的WHILE循环仅以END WHILE终止。你有END;结束时不正确。在结束之前结束时是导致问题的原因。您在第46行已经有了一个结束符,因此这一行正在尝试结束函数。我打赌你可以删除它。问题是,尽管它很愚蠢,但始终使用非标准符号-和的格式错误。由于我正在使用的IDE的编码或者其他一些愚蠢的东西 facepalm“结束;”结束while循环内的“开始”。正如马克所建议的那样,我会尝试不使用“开始…结束”;嗯,我已经删除了END在结束;结束时我在新代码中遇到了类似的错误…而循环也不需要开始
WHILE
循环仅以END WHILE终止代码>。你有END;结束时
不正确。在结束之前结束时代码>是导致问题的原因。您在第46行已经有了一个结束符,因此这一行正在尝试结束函数。我打赌你可以删除它。问题是,尽管它很愚蠢,但始终使用非标准符号-和的格式错误。由于我正在使用的IDE的编码或者其他一些愚蠢的东西
facepalm“结束;”结束while循环内的“开始”。正如马克所建议的那样,我会尝试不使用“开始…结束”;嗯,我已经删除了END代码>在<代码>结束;结束时代码>我在新代码中遇到了类似的错误…而循环也不需要开始
<代码>当。。。做结束
是正确的语法。不幸的是,这不是问题所在。正如尼尔指出的,结束了代码>结束开始
向上。没问题。试过了/没有试过,没有区别。
delimiter |
CREATE FUNCTION BASE64_DECODE (input BLOB)
RETURNS BLOB
CONTAINS SQL
DETERMINISTIC
SQL SECURITY INVOKER
BEGIN
DECLARE ret BLOB DEFAULT '';
DECLARE done TINYINT DEFAULT 0;
IF input IS NULL THEN
RETURN NULL;
END IF;
each_block:
WHILE NOT done DO BEGIN
DECLARE accum_value BIGINT UNSIGNED DEFAULT 0;
DECLARE in_count TINYINT DEFAULT 0;
DECLARE out_count TINYINT DEFAULT 3;
each_input_char:
WHILE in_count < 4 DO BEGIN
DECLARE first_char CHAR(1);
IF LENGTH(input) = 0 THEN
RETURN ret;
END IF;
SET first_char = SUBSTRING(input,1,1);
SET input = SUBSTRING(input,2);
BEGIN
DECLARE tempval TINYINT UNSIGNED;
DECLARE error TINYINT DEFAULT 0;
DECLARE base64_getval CURSOR FOR SELECT val FROM base64_data WHERE c = first_char;
DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET error = 1;
OPEN base64_getval;
FETCH base64_getval INTO tempval;
CLOSE base64_getval;
IF error THEN
ITERATE each_input_char;
END IF;
SET accum_value = (accum_value << 6) + tempval;
END;
SET in_count = in_count + 1;
IF first_char = '=' THEN
SET done = 1;
SET out_count = out_count – 1;
END IF;
END; END WHILE;
WHILE out_count > 0 DO BEGIN
SET ret = CONCAT(ret,CHAR((accum_value & 0xff0000) >> 16));
SET out_count = out_count – 1;
SET accum_value = (accum_value << 8) & 0xffffff;
END; END WHILE;
END; END WHILE;
RETURN ret;
END |
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '– 1;
END IF;
END; END WHILE;
' at line 52