これは、使用できる12cで簡単になります
select *
from all_views v
where lower(v.text_vc) like '%abc%';
これは、探しているテキスト文字列が最初の4000文字であることを前提としています。 text_length
が含まれるビューをレポートに含めることもできます。 警告とともに>4000です。
以前のバージョンでは(または4000文字の制限を回避するために)、次のようなPL/SQLループを試すことができます。
begin
dbms_output.put_line('Owner View name');
dbms_output.put_line('------------------------------ -------------------------------');
for r in (
select v.owner, v.view_name, v.text
from all_views v
where v.owner <> 'SYS'
)
loop
if lower(r.text) like '%abc%' then
dbms_output.put_line(rpad(r.owner,31) || r.view_name);
end if;
end loop;
end;
PL / SQLは、SQLを暗黙的に変換しますLONG
32K PL/SQL文字列への値。
(12.2.0.1.0でのテストでは、これはORA-06502: PL/SQL: numeric or value error
で失敗しました。 select
で カーソルにSYS.DBA_SCHEDULER_RUNNING_JOBS
が含まれている場合のステートメント またはSYS."_user_stat"
、テキストが長い他のビューは正常に処理されましたが、理由はわかりません。表示されていない問題がある可能性があります。)