错误1064(42000):声明光标时

时间:2017-01-26 09:07:13

标签: mysql stored-procedures

我正在尝试在MYSQL中创建存储过程并获得以下错误。 我搜索了它,但没有找到解决方案,请帮助我。

DELIMITER // 
CREATE OR REPLACE PROCEDURE P_PROCESS_USER_STG ( OUT    O_error_msg         VARCHAR(3000),
                                                 OUT    O_status            VARCHAR(300),
                                                 IN     I_uploaded_by       INT (10))
BEGIN
   declare L_program_name            VARCHAR(100);

   declare L_login_id              INT(10)     ;
   declare L_password              VARCHAR(100);
   declare L_first_name            VARCHAR(100); 
   declare L_last_name             VARCHAR(100); 
   declare L_privilege_group_id    INT(10)     ;
   declare L_group_id              INT(10)     ;
   declare L_message               VARCHAR(100); 
   declare L_date_of_upload        TIMESTAMP   ;
   declare L_date_of_update        TIMESTAMP   ;
   declare L_uploaded_by           INT(10)     ;
   declare L_status                VARCHAR(10) ; 
   declare L_error_msg             VARCHAR(100), 

   declare L_finished              INT(1)        DEFAULT 0;

   declare C_user_stg CURSOR FOR 
      SELECT LOGIN_ID, 
             PASSWORD, 
             FIRST_NAME, 
             LAST_NAME, 
             PRIVILEGE_GROUP_ID, 
             GROUP_ID
        FROM uploaded_user_stg 
       where UPLOADED_BY = I_uploaded_by 
         and status in ( 'NEW' , 'UPDATE' );

   declare CONTINUE HANDLER 
       FOR NOT FOUND SET L_finished = 1;

   OPEN C_user_stg;

   get_user: LOOP

      FETCH C_user_stg INTO L_login_id          ,
                            L_password          ,
                            L_first_name        ,
                            L_last_name         ,
                            L_privilege_group_id,
                            L_group_id          ;

      IF L_finished = 1 THEN 
         LEAVE get_user;
      END IF;

 -- build email list
      CALL P_CREATE_USER ( L_message ,
                           L_status    ,
                           L_login_id  ,
                           L_password  ,
                           L_first_name,
                           L_last_name ,
                           L_privilege_group_id,
                           L_group_id  )

      UPDATE uploaded_user_stg 
         SET status         = L_status,
             error_msg      = L_message
             date_of_update = now();
       where login_id  = L_login_id;

   END LOOP get_email;

   CLOSE get_user;

END//

DELIMITER ;

我收到以下错误:

  

错误1064(42000):您的SQL语法有错误;检查   手动,以便在'

附近使用正确的语法      

声明L_finished INT(1)DEFAULT 0;

     

在第18行声明C_'

1 个答案:

答案 0 :(得分:0)

从以下位置更改:

declare L_error_msg             VARCHAR(100), 

declare L_error_msg             VARCHAR(100);