0

コードは次のとおりです。

  create or replace procedure getuser(User_ID In VARCHAR2)Is    
    Username varchar2(30);
    cursor c1(Userid VARCHAR2)  --Cursor o store the row
    IS SELECT USERNAME FROM ALL_USERS WHERE USERNAME = Userid;
    BEGIN
     Open c1(User_id);
     loop
          FETCH c1 INTO USERNAME;
          EXIT WHEN C1%NOTFOUND;
       END LOOP;
       execute immediate 'drop' || USERNAME; 
       CLOSE c1;
    END;
    / 

    execute system.getuser('STUDENT_0602053');

取得しているエラーは、ストアド プロシージャ execute system.getuser('STUDENT_0602053'); を実行すると無効な SQL ステートメントです

4

2 に答える 2

2

そのはず

EXECUTE IMMEDIATE 'drop user '||username;

あなたも望むかもしれません:

EXECUTE IMMEDIATE 'drop user '||username||' cascade';

または、オブジェクトを所有している場合、ユーザーは削除されません。

また、ユーザー SYSTEM としてログインしていますか?

于 2013-03-24T22:51:49.267 に答える
0

単なる推測です - もっと問題があるかもしれません...

しかし、この行にはスペースが必要です..

execute immediate 'drop' || USERNAME;

する必要があります

execute immediate 'drop ' || USERNAME; 
于 2013-03-24T22:49:57.803 に答える