纠正DB2存储过程的错误

纠正DB2存储过程的错误

问题描述:

我创造我的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. 

请帮帮忙,我还在学习存储过程,所以我还没有习惯它。任何帮助将不胜感激,谢谢!

尝试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