Nejprve obecná rada:Vypište proměnnou l_sql
do vaší konzole pomocí dbms_output.put_line
nebo použijte nějakou tabulku ladění, do které to můžete vložit. Dávejte pozor také na datový typ této proměnné. Pokud potřebujete rozšířit SQL, můžete dosáhnout bodu, kdy musíte použít CLOB
proměnná místo varchar2
.
Pokud chcete mít svůj problém kompletně analyzován, budete muset dodat struktury tabulek a testovací data, proto vám nejprve poskytnu několik obecných vysvětlení:
Use Generic Column Names
je v pořádku, pokud máte trvalé, neměnné množství sloupců. Pokud se však může změnit pořadí sloupců nebo dokonce jejich množství, je to špatný nápad, protože pokud váš dotaz povede k více sloupcům, než je Generic Column Count
, stránka zobrazí chybu
Možnost 1:Použijte v dotazu aliasy sloupců
Vylepšete PL/SQL Function Body returning SQL Query
způsobem, který vydává podrobné zobrazované názvy, jako je tento:
return 'select 1 as "Your verbose column name", 2 as "Column #2", 3 as "Column #3" from dual';
Vypadá to takto:
Má to tu nevýhodu, že názvy sloupců se v návrháři také zobrazují tímto způsobem a APEX tyto názvy sloupců aktualizuje pouze v případě, že funkci znovu ověříte. Budete mít problém odkazovat na sloupec s interním názvem Your verbose column name
v procesním kódu nebo dynamické akci.
Stále to však funguje, i když změníte názvy sloupců, aniž byste sdělili APEX, například externalizací PL/SQL Function Body
do skutečné funkce.
Možnost 2:Použijte vlastní záhlaví sloupců
Trochu skryté, ale existuje také možnost zcela vlastních záhlaví sloupců. Je téměř na konci atributů stránce vaší oblasti přehledu.
Zde můžete také zadat funkci, která vrátí názvy sloupců. Dávejte pozor, aby tato funkce neměla vracet dotaz SQL, který sám vrací názvy sloupců, ale místo toho vrací názvy sloupců oddělené dvojtečkou .
Pomocí této metody je snazší identifikovat a odkazovat na vaše sloupce v návrháři:
Možnost 3:Obojí
Vypněte obecné názvy sloupců, nechte svůj dotaz vracet názvy sloupců, které lze snadno identifikovat a odkazovat, a použijte custom column headings
funkce vrací podrobná jména vašich uživatelů.
Můj osobní názor
Používám 3. možnost v produkční aplikaci, kde lidé mohou sami měnit množství a pořadí sloupců pomocí kyvadlových položek na stránce sestavy. Chvíli to trvalo, ale teď to funguje jako kouzlo, jako nějaký dynamický PIVOT
bez PIVOT
.