mysqlprocedure在localhost上出现了一个奇怪的错误


mysqlprocedure weird mistake on localhost

我正在尝试使用一个过程更改mysql数据库的字符集。

这是我几年前写的,直到今天我才回到过去。

我犯了一个奇怪的错误:

以下是我的程序:

Create procedure changecharset()
Begin
Declare tname varchar(255);
Declare done int default 0;
Declare tc Cursor For
Select TABLE_NAME From information_schema.TABLES Where TABLE_SCHEMA = schema();
DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done = 1;
Open tc;
myloop: loop
Fetch tc into tname;
If done = 1 Then
Leave myloop;
End if ;
Set @query = Concat('Alter Table `', tname, '` convert to character set utf8 collate utf8_swedish_ci;');
PREPARE alterstmt FROM @query; 
execute alterstmt ;
Deallocate prepare alterstmt;
End loop;
close tc;
End //
Delimiter ;
[/sql]

这是mysql服务器的答案

1064-您的SQL语法出现错误;查看与MySQL服务器版本相对应的手册,以获得要使用的正确语法

3号线"附近

任何形式的帮助都将不胜感激

MySQL似乎将分号视为语句的末尾。

在运行CREATE PROCEDURE语句之前,请确保更改了分隔符。

DELIMITER $$
CREATE PROCEDURE foo()
BEGIN
   DECLARE ... ; 
   SET ... ;
END $$
DELIMITER ;