以下是代码:
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');
答案 0 :(得分:2)
应该是
EXECUTE IMMEDIATE 'drop user '||username;
您可能还需要:
EXECUTE IMMEDIATE 'drop user '||username||' cascade';
或者,如果用户拥有任何对象,则不会被删除。
另外,您是以用户SYSTEM身份登录的吗?
答案 1 :(得分:0)
只是一个猜测 - 可能会有更多问题......
但这条线需要一个空间..
execute immediate 'drop' || USERNAME;
应该是
execute immediate 'drop ' || USERNAME;