今天同事raise一个小问题,怎么在ALL_VIEWS数据字典text字段查找lrf字符串:
etl@DWTEST> select owner,view_name from all_views where instr(text,'lrf') > 0;
select owner,view_name from all_views where instr(text,'lrf') > 0
*
ERROR at line 1:
ORA-00932: inconsistent datatypes: expected NUMBER got LONG
因text字段为long类型,此数据类型限制较多,故可以参考下面的PL/SQL代码段解决:
DECLARE
v_instr_view_ddl NUMBER;
BEGIN
FOR l_ctr IN (SELECT owner,view_name,
sign(dbms_lob.instr(DBMS_METADATA.get_ddl('VIEW',view_name,owner),'lrf')) AS instr_view_ddl
FROM all_views) LOOP
IF l_ctr.instr_view_ddl = 1 THEN
dbms_output.put_line(l_ctr.owner || '.' || l_ctr.view_name);
END IF;
END LOOP;
END;
有什么问题可留言噢!Good luck to U!
本文讨论了如何在数据库的TEXT字段中查找特定字符串,通过使用PL/SQL代码段来解决数据类型不匹配的问题,并提供了实际示例。
1458

被折叠的 条评论
为什么被折叠?



