如题,我在SQLyog Enterprise中执行如下代码,但是每次都是declare报错;在mysql命令行中也是如此,请问该怎么用declare呢?
代码如下:
CREATE PROCEDURE p8() 
BEGIN 
DECLARE a INT; 
DECLARE b INT; 
SET a = 5; 
SET b = 5; 
select pkid,name,userGroup_desc,parent_id,group_state from T_VSM_SECPOLICY_USERGROUP; 
END;
错误信息:
Error Code : 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
(0 ms taken)Error Code : 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 'DECLARE b INT' at line 1
(0 ms taken)Error Code : 1193
Unknown system variable 'a'
(0 ms taken)Error Code : 1193
Unknown system variable 'b'
(0 ms taken)(35 row(s)returned)
(0 ms taken)Error Code : 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 'END' at line 1
(0 ms taken)求解,谢谢

解决方案 »

  1.   

    已经知道了,是没有定义delimiter的原因,但是定义游标时报错呢?抱歉,新手。
    delimiter //
    CREATE PROCEDURE p8()  
    BEGIN  
    DECLARE a INT;  
    DECLARE b INT;  
    SET a = 5;  
    SET b = 5;  
    declare cur0 cursor for select pkid from T_VSM_SECPOLICY_USERGROUP;  --这里为什么报错?
    END//
      

  2.   

    declare cur0 cursor for select pkid from T_VSM_SECPOLICY_USERGROUP; --这里为什么报错?declare 必须在其它语句之前。
      

  3.   

    delimiter //
    CREATE PROCEDURE p8()   
    BEGIN   
    declare cur0 cursor for select pkid from T_VSM_SECPOLICY_USERGROUP;
    DECLARE a INT;   
    DECLARE b INT;   
    SET a = 5;   
    SET b = 5;   
    END//
      

  4.   

    我也是按照楼上这样做的,为啥还是同样的sql syntax错误
    CREATE PROCEDURE NewProc()
    BEGIN
    DECLARE @s varchar(10);
    set @s='Expired';
    select @s
    END