通过LONG列查询

时间:2013-04-15 21:18:34

标签: sql oracle11g

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

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

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

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

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

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

谢谢, 丹

1 个答案:

答案 0 :(得分: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你很高兴它在那里。