我们正在安装一个大型项目,我正在编写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中执行吗?
谢谢, 丹
答案 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你很高兴它在那里。