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

Kueri Tab Silang Dinamis di Oracle

Anda dapat menggunakan kursor dinamis untuk mengeksekusi SQL dinamis yang dikompilasi dari variabel VARCHAR2:

DECLARE 
       w_sql             VARCHAR2 (4000);
       cursor_           INTEGER;
       v_f1    NUMBER (6);
       v_f2    NUMBER (2);
       v_some_value_2_filter_4    NUMBER (2);
       rc      INTEGER         DEFAULT 0;
BEGIN
        -- join as many tables as you need and construct your where clause
        w_sql :='SELECT f1, f2 from TABLE1 t1, TABLE2 t2, ... WHERE t1.f1 =' || v_some_value_2_filter_4 ; 

       -- Open your cursor
       cursor_ := DBMS_SQL.open_cursor;
       DBMS_SQL.parse (cursor_, w_sql, 1);
       DBMS_SQL.define_column (cursor_, 1, v_f1);
       DBMS_SQL.define_column (cursor_, 2, v_f2);
      -- execute your SQL
       rc := DBMS_SQL.EXECUTE (cursor_);

       WHILE DBMS_SQL.fetch_rows (cursor_) > 0
       LOOP
          -- get values from record columns
          DBMS_SQL.COLUMN_VALUE (cursor_, 1, v_f1);
          DBMS_SQL.COLUMN_VALUE (cursor_, 2, v_f2);

          -- do what you need with v_f1 and v_f2 variables

       END LOOP;

END;

Atau Anda dapat menggunakan langsung eksekusi , lebih mudah diterapkan jika Anda hanya perlu memeriksa nilai atau mengeksekusi dan menyisipkan/memperbarui/menghapus kueri

    w_sql :='select f1 from table where f1 = :variable';
    execute immediate w_sql into v_f1 using 'valor1'

Berikut info lebih lanjut tentang kursor dinamis:http://docs. oracle.com/cd/B10500_01/appdev.920/a96590/adg09dyn.htm




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Ekspresi reguler pada Tanggal di Oracle

  2. Kesalahan saat memanggil Java dari PL/SQL

  3. Oracle Managed ODP.NET tidak dapat menemukan tnsnames.ora

  4. Bagaimana cara ZIP File di PL/SQL?

  5. Referensi yang bagus untuk Oracle PL/SQL