Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Tekst wyszukiwania Oracle w widokach

Staje się to łatwiejsze w 12c, gdzie możesz korzystać

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

Zakłada się, że szukany ciąg tekstowy znajduje się w pierwszych 4000 znaków. Możesz również chcieć, aby raport zawierał dowolny widok, w którym text_length wynosi> 4000 wraz z ostrzeżeniem.

We wcześniejszych wersjach (lub aby uniknąć ograniczenia 4000 znaków), możesz wypróbować pętlę PL/SQL w następujący sposób:

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 niejawnie konwertuje kod SQL LONG wartość do ciągu 32K PL/SQL.

(W moich testach w 12.2.0.1.0 nie powiodło się to z ORA-06502: PL/SQL: numeric or value error w select oświadczenie, gdy mój kursor zawierał SYS.DBA_SCHEDULER_RUNNING_JOBS lub SYS."_user_stat" , mimo że inne widoki z dłuższym tekstem były obsługiwane pomyślnie i nie wiem dlaczego. Może występować jakiś problem, którego nie widzę).



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. ORA-06502:PL/SQL:błąd liczbowy lub wartości:zbyt mały bufor ciągu znaków

  2. Jak stworzyć wyzwalacz after serverror w Oracle?

  3. JBoss automatycznie łączy się ponownie z bazą danych po ponownym uruchomieniu/rozłączaniu bazy danych

  4. Wybieranie wartości ze zmiennej tabeli / tablicy Oracle?

  5. PL/SQL — przykład podniesienia błędu aplikacji