2013-03-09 94 views
0

我創造我的DB2數據庫中的存儲過程,這裏是我的存儲過程的代碼:糾正DB2存儲過程的錯誤

CREATE OR REPLACE PROCEDURE PWDCHANGE (UNAME IN VARCHAR(32), 
              OLDPWD IN VARCHAR(32), 
              NEWPWD IN VARCHAR(32)) 
    AS 
    BEGIN 
     IF LOGINTABLE.USERNAME = UNAME AND LOGINTABLE.PASSWORD = OLDPWD THEN 
     UPDATE LOGINTABLE SET PASSWORD = NEWPWD; 
     DBMS_OUTPUT.PUT_LINE('Password Changed Successfully!'); 
     ELSE DBMS_OUTPUT.PUT_LINE('Incorrect Old Password Input'); 
    END IF; 
    END; 

但正如我在IBM Data Studio中部署它,它會顯示它說的錯誤:

Deploy SENJOBLADE.PWDCHANGE(VARCHAR(32), VARCHAR(32), VARCHAR(32)) 

    Running 
    SENJOBLADE.PWDCHANGE - Deploy started. 
    Create stored procedure returns SQLCODE: -104, SQLSTATE: 42601. 
    SENJOBLADE.PWDCHANGE: 1: An unexpected token "VARCHAR" was found following "PWDCHANGE (UNAME IN". Expected tokens may include: ",".. SQLCODE=-104, SQLSTATE=42601, DRIVER=4.13.111 
    An unexpected token "VARCHAR" was found following "PWDCHANGE (UNAME IN". Expected tokens may include: ",".. SQLCODE=-104, SQLSTATE=42601, DRIVER=4.13.111 
    SENJOBLADE.PWDCHANGE - Deploy failed. 
    SENJOBLADE.PWDCHANGE - Roll back completed successfully. 

我不知道爲什麼VARCHAR是一個意外的標記,我不知道該怎麼改變才能部署我的存儲過程。這個存儲過程的功能是接受3個用於密碼更改的輸入,一個用戶名,一個當前密碼和替換密碼,這就是爲什麼我有3個IN值。

SENJOBLADE是我的架構名稱,LOGINTABLE是具有兩列的表名,用戶名& Password列

我試圖消除VARCHAR處理這個錯誤顯示:

Deploy SENJOBLADE.PWDCHANGE(IN, IN, IN) 

    Running 
    SENJOBLADE.PWDCHANGE - Deploy started. 
    Create stored procedure returns SQLCODE: -104, SQLSTATE: 42601. 
    SENJOBLADE.PWDCHANGE: 2: An unexpected token "BEGIN" was found following "PWD IN) 
      AS 
    ". Expected tokens may include: ":".. SQLCODE=-104, SQLSTATE=42601, DRIVER=4.13.111 

    An unexpected token "BEGIN" was found following "PWD IN) 
      AS 
    ". Expected tokens may include: ":".. SQLCODE=-104, SQLSTATE=42601, DRIVER=4.13.111 

    SENJOBLADE.PWDCHANGE - Deploy failed. 
    SENJOBLADE.PWDCHANGE - Roll back completed successfully. 

請幫幫忙,我還在學習存儲過程,所以我還沒有習慣它。任何幫助將不勝感激,謝謝!

回答

0

嘗試Deploy SENJOBLADE.PWDCHANGE(UNAME, OLDPWD, NEWPWD)

+0

我該怎麼做?我在IBM Data Studio中通過右鍵單擊並選擇DEPLOY – 2013-03-09 13:12:23

+0

來部署我的存儲過程。對不起,我的答案不會幫助,但是應該 - 刪除單詞'as'並用短語'LANGUAGE SQL'替換它,如下所示: 'CREATE OR REPLACE PROCEDURE PWDCHANGE(UNAME IN VARCHAR(32), OLDPWD IN VARCHAR(32), NEWPWD IN VARCHAR(32)) 語言SQL BEGIN ...' – adrianz 2013-03-09 15:40:36