gpt4 book ai didi

oracle - 删除 PL SQL 中的语句

转载 作者:行者123 更新时间:2023-12-02 06:48:37 25 4
gpt4 key购买 nike

可以在 PL SQL 中执行 Drop 吗?

这个 SQL 有什么问题

我正在尝试删除所有用户。问题出在 drop user username cascase 语句中

connect sys/abcsds@1.1.1.1 as sysdba
exec dbms_output.enable(1000000);
set serveroutput on
DECLARE
BEGIN
for rec in (select username from dba_users where username LIKE 'S%' AND username NOT LIKE 'SY%') loop
dbms_output.put_line(to_char(rec.username));
dbms_sql.execute('drop user rec.username cascade');
end loop;
END;
.
run;
exit;

最佳答案

您可以在循环中使用 DDL,但您必须构建字符串,因为您无法绑定(bind)对象名称。

例如:

DECLARE
l_ddl VARCHAR2(1000);
BEGIN
FOR rec IN (SELECT username
FROM dba_users
WHERE username LIKE 'S%'
AND username NOT LIKE 'SY%') LOOP
l_ddl := 'drop user '|| rec.username ||' cascade';
dbms_output.put_line(l_ddl);
EXECUTE IMMEDIATE (l_ddl);
END LOOP;
END;

但请注意,DDL 在 Oracle 中不是事务性的(它在之前和之后执行提交),因此您将无法回滚任何更改。

关于oracle - 删除 PL SQL 中的语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6912551/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com