sql >> Database >  >> RDS >> Oracle

Oracle zoektekst van views

Dit wordt gemakkelijker in 12c, waar u

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

Hierbij wordt ervan uitgegaan dat de tekstreeks die u zoekt in de eerste 4000 tekens bestaat. U kunt het rapport ook elke weergave laten bevatten waarin text_length is> 4000 samen met een waarschuwing.

In eerdere versies (of om de beperking van 4000 tekens te vermijden), kunt u een PL/SQL-lus als volgt proberen:

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 converteert impliciet de SQL LONG waarde naar een 32K PL/SQL-tekenreeks.

(In mijn tests in 12.2.0.1.0 mislukte dit met ORA-06502: PL/SQL: numeric or value error bij de select statement toen mijn cursor SYS.DBA_SCHEDULER_RUNNING_JOBS bevatte of SYS."_user_stat" , hoewel andere weergaven met langere tekst met succes werden verwerkt, en ik weet niet zeker waarom. Er is mogelijk een probleem dat ik niet zie.)



  1. Wat is de opgeslagen procedure en waarom de opgeslagen procedure?

  2. Een lijst met database-e-mailprofielen retourneren in SQL Server (T-SQL)

  3. MySQL-clienttoepassingen gebruiken

  4. Verbinding maken met een externe database vanaf een localhost-computer met behulp van mysql en PHP