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

Có cách nào để hiển thị các cột động trong Oracle apex không

Một gợi ý chung đầu tiên:Nhập biến của bạn l_sql vào bảng điều khiển của bạn bằng cách sử dụng dbms_output.put_line hoặc sử dụng một số loại bảng gỡ lỗi mà bạn có thể chèn nó vào. Cũng nên cẩn thận về kiểu dữ liệu của biến đó. Nếu bạn cần mở rộng SQL, bạn có thể đạt đến điểm mà bạn cần sử dụng CLOB biến thay vì varchar2 .

Bạn sẽ cần cung cấp cấu trúc bảng và dữ liệu kiểm tra nếu bạn muốn phân tích vấn đề của mình một cách hoàn chỉnh, do đó, trước tiên tôi sẽ cung cấp cho bạn một số giải thích chung:

Use Generic Column Names là ok nếu bạn có số lượng cột vĩnh viễn, không thể thay đổi. Nhưng nếu thứ tự các cột của bạn hoặc thậm chí số lượng có thể thay đổi, thì đây là một ý tưởng tồi, vì trang của bạn sẽ hiển thị lỗi nếu truy vấn của bạn dẫn đến nhiều cột hơn Generic Column Count

Tùy chọn 1:Sử dụng bí danh cột trong truy vấn của bạn

Nâng cao PL/SQL Function Body returning SQL Query của bạn theo cách mà nó xuất ra các tên hiển thị dài dòng, như thế này:

return 'select 1 as "Your verbose column name", 2 as "Column #2", 3 as "Column #3" from dual';

Nó trông như thế này:

Nó có nhược điểm là tên cột cũng xuất hiện theo cách này trong trình thiết kế và APEX sẽ chỉ cập nhật những tên cột này nếu bạn xác thực lại hàm. Bạn sẽ gặp khó khăn khi tham chiếu một cột có tên nội bộ là Your verbose column name trong mã quy trình hoặc hành động động.

Tuy nhiên, nó vẫn hoạt động, ngay cả khi bạn thay đổi tên cột mà không báo cho APEX, chẳng hạn bằng cách ngoại hóa PL/SQL Function Body thành một chức năng thực sự.

Tùy chọn 2:Sử dụng tiêu đề cột tùy chỉnh

Một chút ẩn, nhưng cũng có tùy chọn tiêu đề cột hoàn toàn tùy chỉnh. Nó gần như ở cuối thuộc tính trang của khu vực báo cáo của bạn.

Tại đây bạn cũng có thể cung cấp một hàm trả về tên cột của bạn. Hãy cẩn thận rằng hàm này không phải trả về một truy vấn SQL mà chính nó trả về các tên cột, nhưng thay vào đó, trả về các tên cột được phân tách bằng dấu hai chấm .

Với phương pháp này, việc xác định và tham chiếu các cột của bạn trong trình thiết kế dễ dàng hơn:

Tùy chọn 3:Cả hai

Tắt Tên cột chung, để truy vấn của bạn trả về tên cột có thể dễ dàng xác định và tham chiếu, đồng thời sử dụng custom column headings hàm trả về tên chi tiết cho người dùng của bạn.

Ý kiến ​​cá nhân của tôi

Tôi đang sử dụng tùy chọn thứ 3 trong ứng dụng sản xuất, nơi mọi người có thể thay đổi số lượng và thứ tự của các cột bằng cách sử dụng các mục con thoi trên trang báo cáo. Phải mất một thời gian, nhưng bây giờ nó hoạt động như một sự quyến rũ, giống như một số PIVOT động không có PIVOT .




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Dung lượng trống Oracle sau khi xóa dữ liệu khỏi bảng

  2. Làm thế nào để nối hai bảng dựa trên dấu thời gian (với phương sai là một vài giây)?

  3. Nhận ngoại lệ ORA-00942:bảng hoặc dạng xem không tồn tại - khi chèn vào bảng hiện có

  4. Cách xác định khóa chính tự động tăng dần trong Oracle

  5. Các giá trị SQL MIN từ hai bảng