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