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');

当我执行存储过程时,得到的错误是无效的 sql 语句执行 system.getuser('STUDENT_0602053');

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 回答