1

我们即将安装一个大型项目,我正在编写 SQL 脚本来进行一些安装验证。正在修改的某些视图仅在查询中有所不同,而不是在名称或列数上。

这些很难验证,因为 dba_views 将查询文本存储在 LONG 列中。通常,我会使用这样的查询:

select *
  from dba_views
 where name = 'LOCKED_DOCUMENTS_V'
   and instr(upper(text), 'TLP') > 0;

查看视图是否包含特定的文本字符串,它是代码,但这不适用于长列。

到目前为止,我唯一想到的是可以从 dba_views 检查 text_length,但最好检查实际查询。

关于如何在将在 SQL*Plus 中执行的 SQL 脚本中执行此操作的任何想法?

谢谢,丹

4

1 回答 1

1

嘿,我会使用 DBMS_METADATA.GET_DDL,如下所示:

select 
   dbms_lob.instr(clob_contents,'TLP')
from 
   (select 
        dbms_metadata.get_ddl('VIEW','LOCKED_DOCUMENTS_V', 'SCHEMA') clob_contents 
    from 
        dual) get_clob

这将使您获得该位置-只要它> 0,您就很高兴它在那里。

于 2013-04-15T21:35:25.663 回答