2017-01-26 14 views
0

Ich versuche, gespeicherte Prozedur in MYSQL zu erstellen und unter Fehler zu erhalten. Ich habe darüber gegoogelt aber keine Lösung gefunden bitte helft mir dabei.FEHLER 1064 (42000): Beim Deklarieren eines Cursors

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 ; 

Ich erhalte Below Fehler:

ERROR 1064 (42000): Sie haben einen Fehler in der SQL-Syntax; Überprüfen Sie die Anleitung, die auf für die richtige Syntax in der Nähe '

deklarieren L_finished INT (1) DEFAULT 0;

declare C_‘in Zeile 18

+0

entfernen Argument (1) von INT, und versuchen zu laufen. – yash

Antwort

0

Ändern Sie diese aus:

declare L_error_msg    VARCHAR(100), 

zu

declare L_error_msg    VARCHAR(100); 
+0

Ersetzen Sie das Komma. –

+0

danke Freund !!! –

Verwandte Themen