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

Hiển thị đầu ra THỰC HIỆN Động Trong phạm vi pl / sql Từ sqlplus

bạn sẽ cần lấy kết quả từ CHỌN của mình để hiển thị nó. Bạn sẽ sử dụng cú pháp EXECUTE IMMEDIATE sql_query INTO var1, var2.. varn . Tuy nhiên, trong trường hợp của bạn, số lượng cột không xác định tại thời điểm biên dịch.

Có một số cách bạn có thể giải quyết vấn đề này:

  1. bạn có thể sử dụng DBMS_SQL và lặp lại trên các cột của đầu ra.
  2. bạn có thể tạo một cột với tất cả các kết quả với định dạng có thể đọc được như CSV của XML

Tôi sẽ demo 1:

SQL> DEFINE scheme_name=SYS
SQL> DEFINE table_name=ALL_OBJECTS
SQL> DECLARE
  2     sql_query VARCHAR2(32767);
  3     l_cursor  NUMBER := dbms_sql.open_cursor;
  4     l_dummy NUMBER;
  5     l_columns dbms_sql.desc_tab;
  6     l_value NUMBER;
  7  BEGIN
  8     sql_query := 'select ';
  9     FOR column_rec IN (SELECT column_name
 10                          FROM ALL_TAB_COLS
 11                         WHERE owner = '&scheme_name'
 12                           AND table_name = '&table_name'
 13                           AND data_type = 'NUMBER') LOOP
 14        sql_query := sql_query || 'SUM(' || column_rec.column_name
 15                     || ') "SUM(' || column_rec.column_name || ')", ';
 16     END LOOP;
 17     sql_query := substr(sql_query, 0, length(sql_query) - 2)
 18                  || ' from &scheme_name' || '.&table_name';
 19     dbms_sql.parse(l_cursor, sql_query, dbms_sql.NATIVE);
 20     dbms_sql.describe_columns(l_cursor, l_dummy, l_columns);
 21     FOR i IN 1..l_columns.count LOOP
 22        dbms_sql.define_column(l_cursor, i, l_columns(i).col_type);
 23     END LOOP;
 24     l_dummy := dbms_sql.execute_and_fetch(l_cursor, TRUE);
 25     FOR i IN 1..l_columns.count LOOP
 26        dbms_sql.column_value(l_cursor, i, l_value);
 27        dbms_output.put_line(l_columns(i).col_name ||' = '||l_value);
 28     END LOOP;
 29  END;
 30  /

SUM(DATA_OBJECT_ID) = 260692975
SUM(OBJECT_ID) = 15242783244



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tách chuỗi bằng dòng mới và thêm vào mảng trong PL sql Oracle

  2. Cơ sở dữ liệu Oracle bị treo hoàn toàn trong các truy vấn CẬP NHẬT

  3. làm cách nào để mã hóa chuỗi trong HMAC-SHA256 bằng pl / sql?

  4. Cột nhận dạng Oracle và chèn vào lựa chọn

  5. Làm cách nào để lưu trữ một chuỗi dài hơn 4000 ký tự trong Cơ sở dữ liệu Oracle bằng Java / JDBC?