sql >> Database teknologi >  >> RDS >> Oracle

Oracle søgetekst af visninger

Dette bliver nemmere i 12c, hvor du kan bruge

select *
from   all_views v
where  lower(v.text_vc) like '%abc%';

Dette forudsætter, at den tekststreng, du leder efter, er i de første 4000 tegn. Du kan også få rapporten til at inkludere enhver visning, hvor text_length er> 4000 sammen med en advarsel.

I tidligere versioner (eller for at undgå begrænsningen på 4000 tegn), kan du prøve en PL/SQL-løkke som denne:

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 konverterer implicit SQL LONG værdi til en 32K PL/SQL-streng.

(I mine test i 12.2.0.1.0 mislykkedes dette med ORA-06502: PL/SQL: numeric or value error ved select sætning, da min markør inkluderede SYS.DBA_SCHEDULER_RUNNING_JOBS eller SYS."_user_stat" , selvom andre visninger med længere tekst blev håndteret med succes, og jeg ved ikke hvorfor. Der kan være et problem med dette, jeg ikke kan se.)



  1. subtotal og total for strenge

  2. Vælg flere rækkeværdier i en enkelt række med multitable-klausuler

  3. SQL SERVER 2008 TRIGGER PÅ OPRET TABEL

  4. Indlæsning af XML-data får fejl, der siger, at min kontrolfil refererer til et ikke-eksisterende felt