Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

Con trỏ lồng nhau trong PL / SQL

Con trỏ tĩnh chỉ có thể truy cập các đối tượng tĩnh. Nói cách khác, con trỏ tĩnh chỉ hoạt động nếu tất cả các bảng và cột được biết tại thời điểm biên dịch.

Nếu bạn cần truy cập một bảng có tên chỉ được biết trong quá trình thực thi, bạn sẽ phải sử dụng SQL động . Ví dụ:bạn có thể sử dụng REF CURSOR trong trường hợp của bạn:

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 SQ Xác định Anh chị em qua anh chị em ruột

  2. Dấu thời gian Oracle cho máy chủ sql DateTime

  3. PHẠM VI cho một bảng REFs

  4. Chuyển một hàng thành nhiều hàng Oracle

  5. TO_CHAR của một loại Oracle PL / SQL TABLE