我正在写一个pl/sql代码,它接受模式名称作为input 1并存储在变量l_schema_name中,需要排除的对象被丢弃到input 2并存储在变量l_exclude_objects中(默认值为NULL,如果传递多个对象,则用逗号分隔)
下面是代码块,我在我的代码中,但不知何故,它不排除对象,而运行脚本。
FOR i IN(SELECT owner,object_type,object_name FROM dba_objects WHERE owner = l_schema_name AND object_type IN('SEQUENCE ',' PROCEDURE ',' PACKAGE','TRIGGER','MATERIALIZED VIEW',' TABLE','VIEW',' SYNONYM','FUNCTION',' TYPE','PROGRAM')AND(l_exclude_objects IS NULL OR object_name NOT IN(SELECT TRIM(REGEXP_SUBSTR(l_exclude_objects,'[^,]+',1,LEVEL))FROM DUAL CONNECT BY LEVEL <= REGEXP_COUNT(l_exclude_objects,',')+ 1))ORDER BY DECODE(object_type,' TRIGGER ',1,' PACKAGE ',2,' PROCEDURE ',3,' FUNCTION',4,'VIEW',5,'SYNONYM',6,'MATERIALIZED VIEW ',7,' TABLE',8,'SEQUENCE',9))
尝试过但没有成功
1条答案
按热度按时间jslywgbw1#
它实际上是 * 工作 *:
所以,有什么问题吗?在21号线。
object_type
object_name
我前面的例子假设它是 type。
好吧,让我们试试名字。这是Scott示例模式,它包含
EMP
和DEPT
表,它们被排除在输出之外:因此,我认为这似乎是可以的。