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

Làm thế nào để truy cập cấu trúc và lấy danh sách cột, các kiểu dữ liệu của con trỏ?

Bạn có thể chuyển đổi con trỏ tham chiếu thành DBMS_SQL con trỏ sử dụng DBMS_SQL.TO_CURSOR_NUMBER hàm số. Sau đó, khi có số con trỏ, bạn có thể kiểm tra thao tác với nó thông qua DBMS_SQL . Điều này bao gồm việc có thể mô tả các cột của nó, như được hiển thị trong ví dụ bên dưới:

DECLARE
  l_rc              SYS_REFCURSOR;

  l_cursor_number   INTEGER;
  l_col_cnt         INTEGER;
  l_desc_tab        DBMS_SQL.desc_tab;
  l_col_num         INTEGER;
BEGIN
  OPEN l_rc FOR 'SELECT object_name, object_type, last_ddl_time FROM dba_objects where rownum <= 10';

  l_cursor_number   := DBMS_SQL.to_cursor_number (l_rc);

  DBMS_SQL.describe_columns (l_cursor_number, l_col_cnt, l_desc_tab);

  l_col_num         := l_desc_tab.FIRST;

  IF (l_col_num IS NOT NULL) THEN
    LOOP
      DBMS_OUTPUT.put_line ('Column #' || l_col_num);
      DBMS_OUTPUT.put_line ('...name: ' || l_desc_tab (l_col_num).col_name);
      DBMS_OUTPUT.put_line ('...type: ' || l_desc_tab (l_col_num).col_type);
      DBMS_OUTPUT.put_line ('...maxlen: ' || l_desc_tab (l_col_num).col_max_len);
      -- ... other fields available in l_desc_tab(l_col_num) too.
      l_col_num   := l_desc_tab.NEXT (l_col_num);
      EXIT WHEN (l_col_num IS NULL);
    END LOOP;
  END IF;

  DBMS_SQL.close_cursor (l_cursor_number);
END;

Đầu ra

Column #1
...name: OBJECT_NAME
...type: 1
...maxlen: 128
Column #2
...name: OBJECT_TYPE
...type: 1
...maxlen: 23
Column #3
...name: LAST_DDL_TIME
...type: 12
...maxlen: 7


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Quy trình lưu trữ Java Vs PL / Quy trình lưu trữ SQL

  2. Xóa bằng Tham gia trong Truy vấn sql Oracle

  3. UPSERT vào bảng với tên bảng động

  4. Làm thế nào để biên dịch tất cả các gói không hợp lệ trong lược đồ?

  5. Các bước thay đổi Mật khẩu quản trị viên bị mất hoặc quên trên Tên miền WebLogic EBS R12.2