Oracle
 sql >> база данни >  >> RDS >> Oracle

Има ли начин за показване на динамични колони в Oracle apex

Първо общ съвет:изведете вашата променлива l_sql към вашата конзола чрез dbms_output.put_line или използвайте някакъв вид таблица за отстраняване на грешки, в която можете да го вмъкнете. Също така внимавайте за типа данни на тази променлива. Ако трябва да разширите SQL, можете да стигнете до момент, в който трябва да използвате CLOB променлива вместо varchar2 .

Ще трябва да предоставите структури на таблици и тестови данни, ако искате вашият проблем да бъде анализиран напълно, затова първо ще ви дам някои общи обяснения:

Use Generic Column Names е добре, ако имате постоянно, непроменимо количество колони. Но ако редът на вашите колони или дори количеството може да се промени, тогава това е лоша идея, тъй като страницата ви ще покаже грешка, ако заявката ви доведе до повече колони от Generic Column Count

Опция 1:Използвайте псевдоними на колони във вашата заявка

Подобрете вашия PL/SQL Function Body returning SQL Query по начин, който извежда подробни показвани имена, като този:

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

Това изглежда така:

Недостатъкът е, че имената на колоните също се показват по този начин в дизайнера и APEX ще актуализира тези имена на колони само ако потвърдите отново функцията. Ще ви е трудно да посочите колона с вътрешното име на Your verbose column name в код на процес или динамично действие.

Въпреки това продължава да работи, дори ако промените имената на колоните, без да кажете на APEX, например чрез екстернализиране на PL/SQL Function Body в реална функция.

Опция 2:Използвайте персонализирани заглавия на колони

Малко скрити, но има и опция за напълно персонализирани заглавия на колони. Той е почти в края на атрибутите страница от вашия отчетен регион.

Тук можете също да предоставите функция, която връща имената на вашите колони. Внимавайте, че тази функция не трябва да връща SQL заявка, която сама връща имена на колони, а вместо това връща имена на колони, разделени с двоеточие .

С този метод е по-лесно да идентифицирате и посочите вашите колони в дизайнера:

Вариант 3:И двете

Изключете общите имена на колони, оставете вашата заявка да върне имена на колони, които могат лесно да бъдат идентифицирани и препратени, и използвайте custom column headings функция връща многословни имена за вашите потребители.

Моето лично мнение

Използвам третата опция в производствено приложение, където хората могат сами да променят количеството и реда на колоните, като използват совалкови елементи на страницата на отчета. Отне известно време, но сега работи като чар, като някакъв динамичен PIVOT без 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. В PHP получаването на клас „PDO“ не е намерено грешка при опит за свързване с Oracle DB

  2. Oracle 11g - как да върна запис от функция с присъединяване към таблица

  3. Как да върна RefCursor от функцията на Oracle?

  4. Как да опиша проблема с производителността в релационна база данни?

  5. таблица или изглед не съществува