1

Oracle でプロシージャを作成しましたが、実行しようとするとエラーが発生します。以下に、この手順を作成するために取っている手順を示します。

SQL> ed getuserinfo

create or replace procedure getUserInfo
    ( p_username out Users.username%TYPE,
      p_password out Users.password%TYPE ) IS
BEGIN

    select username,password into p_username,p_password from users where username='yogi';

END;
/


SQL> exec getuserinfo
BEGIN getuserinfo; END;

          *
ERROR at line 1:
ORA-06550: line 1, column 7:
PLS-00201: identifier 'GETUSERINFO' must be declared
ORA-06550: line 1, column 7:
PL/SQL: Statement ignored

何が問題で、どうすれば解決できますか? 誰でも私を助けることができますか?

4

4 に答える 4

2

まだ行っていないプロシージャを実際に作成する必要があります。後にセミコロンが必要です。SQL*Plusで作成する場合は、ブロックが終了したことをSQL*Plusに通知endするために追加する必要があります。/

create or replace procedure getUserInfo
      ( p_username out Users.username%TYPE,
        p_password out Users.password%TYPE ) IS
BEGIN

select username,password into p_username,p_password from users;

END;
/
show error

show errorエラーがわかりやすい形式でコンソールに返されるように、後で追加することも常に賢明です。

于 2012-06-03T11:18:24.280 に答える
2

create procedure ステートメントを実際に実行しましたか? 「手順が作成されました」を取得しましたか。メッセージ?Oracle が getuserinfo プロシージャを認識していないという事実は、このステートメントが実行されなかったことを示しています。

于 2012-06-03T20:21:13.670 に答える
2

プロシージャコールの間違いだと思います!! 呼び出しは次のようになります。

SQL>var var1 varchar2(50);
SQL>var var2 varchar2(50);
SQL> exec getuserinfo(:var1, :var2); 
SQL> print var1, var2; 

楽しんで!!

于 2013-12-02T09:20:54.917 に答える
1

プロシージャを呼び出すときに、out パラメータを指定する必要があります。

DECLARE
    x Users.username%TYPE;
    y Users.password%TYPE;
BEGIN
    getuserinfo(x, y);
    DBMS_OUTPUT.PUT_LINE('username: ' || x || ', password: ' || y);
END;
于 2012-06-03T14:55:20.887 に答える