我的环境是windows xp sp3,安装的php(5.2.12)+apache(2.0)+mysql(5.1.42),使用phpnow搭建的
在phpmyadmin里面创建存储过程
create procedure getuser(in um varchar(20))
beginend

可以创建,也可以 drop procedure getuser删除
但是只要在begin或者end里面加入任何语句,全部报错,注释可以通过
例如
create procedure getuser(in um varchar(20))
begin

decalre str varchar(20);
end
报错信息为:错误
SQL 查询: CREATE PROCEDURE getuser( IN um varchar( 20 ) ) BEGIN decalre str varchar( 20 ) ;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 'str varchar(20)' at line 3 无论我在begin...end之间加什么语句,全部都报错
请问怎么解决

解决方案 »

  1.   

    不论我写
    create procedure getuser(in um varchar(20))
    begin
    declare str varchar(20);
    end

    还是
    create procedure getuser(in um varchar(20),out bb varchar(20))
    begin
    set bb = 'abcd';
    end
    反正只要在BEGINEND里面加入任何东西全部是错的
      

  2.   

    需要设置 delimiter 
    delimiter //
    create procedure getuser(in um varchar(20))
    begin
      axxx x x xc ;
     xc xc ;
    x x;end
    //
      

  3.   

    楼上的大牛
    delimiter //
    create procedure getuser(in um varchar(20))
    begin
    declare str varchar(20);
    end
     //
    还是错误,为什么呢#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 5
    delimiter // create procedure getuser(in um varchar(20)) begin declare str varchar(20); end //
      

  4.   

    create procedure getuser(in um varchar(20))
    begin
    decalre 'str' varchar(20);
    end把 str 用单引号试试
      

  5.   

    create procedure getuser(in um varchar(20))
    begin
    decalre 'str' varchar(20);
    end错误
    SQL 查询: CREATE PROCEDURE getuser( IN um varchar( 20 ) ) BEGIN decalre 'str'varchar( 20 ) ;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 ''str' varchar(20)' at line 3 
      

  6.   

    需要在你的操作界面中设置这个 delimiter 
      

  7.   

    楼上的意思是不是先运行
    delimiter ;
    然后再运行
    create procedure getuser(in um varchar(20))
    begin
    declare str varchar(20);
    end;
    这个呢
    可是还是报错
    错误
    SQL 查询: CREATE PROCEDURE getuser( IN um varchar( 20 ) ) BEGIN declare str varchar( 20 ) ;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 
      

  8.   

    楼主换一个MYSQL的图形编辑器试试MYSQL-FRONT挺好。或者在MYSQL的DOS命令行下试试看。