Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 如何在Oracle RDBMS中通过掩码删除用户_Sql_Database_Oracle_Plsql - Fatal编程技术网

Sql 如何在Oracle RDBMS中通过掩码删除用户

Sql 如何在Oracle RDBMS中通过掩码删除用户,sql,database,oracle,plsql,Sql,Database,Oracle,Plsql,我想删除名字开头有“WIN”的所有用户(例如,“WIN$DOWS”)。有可能写下像下面这样的东西吗 drop user where name like 'WIN%' DROP USER语句不支持WHERE子句,更不用说LIKE和通配符了 您需要从该匹配项中获取一个用户列表,并迭代该列表: --Bye Users! FOR i IN (SELECT t.username FROM DBA_USERS t WHERE t.username LIKE '

我想删除名字开头有“WIN”的所有用户(例如,“WIN$DOWS”)。有可能写下像下面这样的东西吗

drop user where name like 'WIN%'

DROP USER语句不支持WHERE子句,更不用说LIKE和通配符了

您需要从该匹配项中获取一个用户列表,并迭代该列表:

--Bye Users!
FOR i IN (SELECT t.username
            FROM DBA_USERS t
           WHERE t.username LIKE 'WIN%') LOOP
  EXECUTE IMMEDIATE 'drop user '|| i.username ||'';
END LOOP;

我在没有
BEGIN
的情况下使用上述解决方案时出错<代码>异常<代码>结束语法。 这对我很有用:

BEGIN
  FOR i IN (
    SELECT t.username
    FROM DBA_USERS t
    WHERE t.username LIKE 'WIN%') 
  LOOP
    EXECUTE IMMEDIATE 'DROP USER '|| i.username;
  END LOOP;
 EXCEPTION WHEN OTHERS THEN
   dbms_output.put_line(sqlerrm);
END;
/
对于级联删除,在级联删除的情况下,在
i.username
之后添加
| |“级联”

BEGIN
  FOR i IN (
    SELECT t.username
    FROM DBA_USERS t
    WHERE t.username LIKE 'WIN%') 
  LOOP
    EXECUTE IMMEDIATE 'DROP USER '|| i.username || ' CASCADE';
  END LOOP;
 EXCEPTION WHEN OTHERS THEN
   dbms_output.put_line(sqlerrm);
END;
/

您可能还需要/想要在最后添加
CASCADE