MySQL程序不工作(更正)
我需要获取与正则表达式匹配的所有表名,并对给定的值执行更新查询,为此,我创建了以下MySQL过程,但MySQL告诉我,第3行有一个错误 我有以下MySql过程:MySQL程序不工作(更正),mysql,procedure,Mysql,Procedure,我需要获取与正则表达式匹配的所有表名,并对给定的值执行更新查询,为此,我创建了以下MySQL过程,但MySQL告诉我,第3行有一个错误 我有以下MySql过程: CREATE PROCEDURE example() BEGIN DECLARE bdone INT; DECLARE var1 VARCHAR(250); DECLARE curs CURSOR FOR SHOW tables like '%contenidos_extra%'; DECLARE CO
CREATE PROCEDURE example()
BEGIN
DECLARE bdone INT;
DECLARE var1 VARCHAR(250);
DECLARE curs CURSOR FOR SHOW tables like '%contenidos_extra%';
DECLARE CONTINUE HANDLER FOR NOT FOUND SET bDone = 1;
OPEN curs;
SET bdone = 0;
REPEAT
FETCH curs INTO var1,, b;
UPDATE var1 SET `valor`='modified' WHERE nombre = 'prueba';
UNTIL bdone END REPEAT;
CLOSE curs;
END
delimiter //
CREATE PROCEDURE example()
BEGIN
DECLARE bdone INT;
DECLARE var1 VARCHAR(250);
DECLARE curs CURSOR FOR select table_name from information_schema.tables where table_name like '%contenidos_extra%';
DECLARE CONTINUE HANDLER FOR NOT FOUND SET bDone = 1;
OPEN curs;
SET bdone = 0;
REPEAT
FETCH curs INTO var1;
UPDATE var1 SET `valor`='modified' WHERE nombre = 'prueba';
UNTIL bdone END REPEAT;
CLOSE curs;
END
//
delimiter ;
mysql告诉我这个错误:
#1064 - 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 '' at line 3
在编写过程之前,需要更改分隔符:
CREATE PROCEDURE example()
BEGIN
DECLARE bdone INT;
DECLARE var1 VARCHAR(250);
DECLARE curs CURSOR FOR SHOW tables like '%contenidos_extra%';
DECLARE CONTINUE HANDLER FOR NOT FOUND SET bDone = 1;
OPEN curs;
SET bdone = 0;
REPEAT
FETCH curs INTO var1,, b;
UPDATE var1 SET `valor`='modified' WHERE nombre = 'prueba';
UNTIL bdone END REPEAT;
CLOSE curs;
END
delimiter //
CREATE PROCEDURE example()
BEGIN
DECLARE bdone INT;
DECLARE var1 VARCHAR(250);
DECLARE curs CURSOR FOR select table_name from information_schema.tables where table_name like '%contenidos_extra%';
DECLARE CONTINUE HANDLER FOR NOT FOUND SET bDone = 1;
OPEN curs;
SET bdone = 0;
REPEAT
FETCH curs INTO var1;
UPDATE var1 SET `valor`='modified' WHERE nombre = 'prueba';
UNTIL bdone END REPEAT;
CLOSE curs;
END
//
delimiter ;
注意:不能在过程中使用显示表格
请看这里:
我刚刚重读了这段代码,意识到您还有另一个问题。您需要使用动态SQL执行更新,因为您不能在变量中指定表名。必须为此使用动态SQL语句:
您的过程似乎没有任何正则表达式。您的
like
子句使用通配符匹配,而不是正则表达式。很抱歉,MySQL应该告诉您错误是什么。。在提问时,重要的是要包括给你的错误信息。值得将其编辑到您的问题中。mysql告诉我:您的SQL语法有错误;检查与MySQL服务器版本对应的手册,以获取第3行“”附近要使用的正确语法