Първо общ съвет:изведете вашата променлива 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
.