Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

Teks tampilan pencarian Oracle

Ini menjadi lebih mudah di 12c, di mana Anda dapat menggunakan

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

Ini mengasumsikan string teks yang Anda cari ada di 4000 karakter pertama. Anda mungkin juga memiliki laporan yang menyertakan tampilan apa pun di mana text_length adalah> 4000 bersama dengan peringatan.

Di versi sebelumnya (atau untuk menghindari pembatasan 4000 karakter), Anda dapat mencoba loop PL/SQL seperti ini:

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 secara implisit mengonversi SQL LONG nilai ke string PL/SQL 32K.

(Dalam pengujian saya di 12.2.0.1.0, ini gagal dengan ORA-06502: PL/SQL: numeric or value error di select pernyataan ketika kursor saya menyertakan SYS.DBA_SCHEDULER_RUNNING_JOBS atau SYS."_user_stat" , meskipun tampilan lain dengan teks yang lebih panjang berhasil ditangani, dan saya tidak yakin mengapa. Mungkin ada beberapa masalah dengan ini yang tidak saya lihat.)



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PLSql mengembalikan nilai

  2. Cadangan Skema SQL Saja?

  3. Bagaimana cara menambahkan 10 detik di SQL current_timestamp ( Oracle )

  4. Apa perbedaan antara ORA-12571:kegagalan penulis paket TNS dan ORA-03135:koneksi kehilangan kontak?

  5. Cara mengubah tipe data CLOB KE VARCHAR2(sql)