你可以写一个位动态SQL
BEGIN
FOR u IN (SELECT *
FROM dba_users
WHERE username LIKE 'ZKOracle%')
LOOP
EXECUTE IMMEDIATE 'DROP USER ' || u.username;
END LOOP;
END;
的我可能会延长,要增加一点的日志记录,至少写出你正在下探用户名列表中,但应该做的你想要什么。请记住,DROP USER
是DDL,因此它在语句前后隐式提交 - 您无法回滚您的更改。
为了展示这方面的工作的一个例子(我创建不区分大小写的用户)
SQL> ed
Wrote file afiedt.buf
1 begin
2 for u in (select * from dba_users where username like 'ZKORACLE%')
3 loop
4 execute immediate 'drop user ' || u.username;
5 dbms_output.put_line('Dropped user ' || u.username);
6 end loop;
7* end;
SQL>/
Dropped user ZKORACLE01
PL/SQL procedure successfully completed.
,当我尝试运行此我得到这个错误。 “错误:ORA-06550:第6行,第48列: PLS-00103:在期待以下某项时遇到符号”文件结束“: 。(* @%&= - +;> at是mod余数不是rem 返回<指数(**)><>或!=或〜=> = <= <> 和或类似like2 like4 likec之间使用||批量 成员submultiset“ – user3826435
@ user3826435 - 在我的脚本,第6行是'EXECUTE IMMEDIATE'。脚本中的第6行是什么?你的脚本中是否有EOF字符? –
是的,第6行是我的脚本的EXECUTE IMMEDIATE。通过EOF字符,你的意思是分号? – user3826435