Oracle
 sql >> база данни >  >> RDS >> Oracle

Oracle текст за търсене на изгледи

Това става по-лесно в 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" , въпреки че други изгледи с по-дълъг текст бяха обработени успешно и не съм сигурен защо. Може да има някакъв проблем с това, което не виждам.)



  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-01735:невалидна опция ALTER TABLE - жаба

  2. липсваща или невалидна опция при създаване на таблица поради липса на такава

  3. Проблеми с конкатенацията

  4. Прилагане на OFFSET и LIMIT в ORACLE за сложни заявки за свързване?

  5. Създайте задание за планировчик на Oracle