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

Kursor Bersarang di PL/SQL

Kursor statis hanya dapat mengakses objek statis. Dengan kata lain, kursor statis hanya berfungsi jika semua tabel dan kolom diketahui pada waktu kompilasi.

Jika Anda perlu mengakses tabel yang namanya hanya akan diketahui selama eksekusi, Anda harus menggunakan SQL dinamis . Misalnya, Anda dapat menggunakan REF CURSOR dalam kasus Anda:

DECLARE
   var_table_name    VARCHAR2(30);
   var_dimension_key VARCHAR2(30);
   cur_dimension_key SYS_REFCURSOR;
BEGIN
   FOR cur_all_dim IN (SELECT table_name
                         FROM dba_tables
                        WHERE dba_tables.tablespace_name = 'USERS'
                          AND dba_tables.owner = 'DWH_CORE'
                          AND UPPER(dba_tables.table_name) LIKE ('%DIM%%')
                          AND UPPER(dba_tables.table_name) NOT LIKE ('%TEMP%')
                          AND UPPER(dba_tables.table_name) NOT LIKE ('%DEBUG%')
                          AND UPPER(dba_tables.table_name) NOT LIKE ('%LOG%')) 
   LOOP      
      OPEN cur_dimension_key 
       FOR 'SELECT dimention_key 
              FROM ' || cur_all_dim.table_name;
      LOOP
         FETCH cur_dimensions_key INTO var_dimension_key;
         EXIT WHEN cur_dimensions_key%NOTFOUND;
         dbms_output.put_line(cur_all_dim.table_name);
         dbms_output.put_line(var_dimension_key);      
      END LOOP;
      CLOSE cur_dimension_key;
   END LOOP;
END;


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. oracle pl/sql DBMS_LOCK kesalahan

  2. Bagaimana cara menentukan bahasa (Inggris, Cina ...) dari string yang diberikan di Oracle?

  3. Buat Urutan dengan MULAI DENGAN dari Query

  4. Memasukkan ke Oracle dan mengambil ID urutan yang dihasilkan

  5. cara mengekstrak format tanggal dari oracle string