【问题标题】:Correcting DB2 stored procedure error更正 DB2 存储过程错误
【发布时间】:2013-02-24 23:51:56
【问题描述】:

我正在我的 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 是表名,它有两列,USERNAME 和 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.

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

【问题讨论】:

    标签: database stored-procedures db2


    【解决方案1】:

    试试Deploy SENJOBLADE.PWDCHANGE(UNAME, OLDPWD, NEWPWD)

    【讨论】:

    • 我该怎么做?我通过右键单击并选择 DEPLOY 在 IBM Data Studio 中部署我的存储过程
    • 抱歉,我的回答无济于事,但这应该 - 删除单词 as 并将其替换为短语 LANGUAGE SQL,如下所示:CREATE OR REPLACE PROCEDURE PWDCHANGE (UNAME IN VARCHAR(32), OLDPWD IN VARCHAR(32), NEWPWD IN VARCHAR(32)) LANGUAGE SQL BEGIN ...
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-02
    • 1970-01-01
    • 2021-01-30
    • 1970-01-01
    • 1970-01-01
    • 2015-02-25
    相关资源
    最近更新 更多