0

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 列の 2 つの列があります。

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.

助けてください、私はまだストアドプロシージャについて学んでいるので、まだ慣れていません. どんな助けでも大歓迎です、ありがとう!

4

1 に答える 1

0

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

于 2013-03-09T12:58:49.510 に答える