sql >> Databasteknik >  >> RDS >> Oracle

Finns det ett sätt att visa dynamiska kolumner i Oracle apex

En allmän ledtråd först:Mata ut din variabel l_sql till din konsol med dbms_output.put_line eller använd någon form av felsökningstabell där du kan infoga den i. Var också försiktig med datatypen för den variabeln. Om du behöver utöka SQL kan du nå en punkt där du behöver använda en CLOB variabel istället för varchar2 .

Du kommer att behöva tillhandahålla tabellstrukturer och testdata om du vill att ditt problem ska analyseras fullständigt, därför kommer jag först att ge dig några allmänna förklaringar:

Use Generic Column Names är ok om du har en permanent, oföränderlig mängd kolumner. Men om ordningen på dina kolumner eller till och med beloppet kan ändras är detta en dålig idé, eftersom din sida kommer att visa ett fel om din fråga resulterar i fler kolumner än Generic Column Count

Alternativ 1:Använd kolumnalias i din fråga

Förbättra din PL/SQL Function Body returning SQL Query på ett sätt att den matar ut omfattande visningsnamn, så här:

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

Det ser ut så här:

Det har nackdelen att kolumnnamnen också dyker upp på detta sätt i designern och APEX kommer bara att uppdatera dessa kolumnnamn om du omvaliderar funktionen. Du kommer att ha svårt att referera till en kolumn med det interna namnet Your verbose column name i en processkod eller dynamisk handling.

Men det fungerar fortfarande, även om du ändrar kolumnnamnen utan att berätta för APEX, till exempel genom att externisera PL/SQL Function Body till en riktig funktion.

Alternativ 2:Använd anpassade kolumnrubriker

Lite dolt, men det finns också möjlighet till helt anpassade kolumnrubriker. Det är nästan i slutet av attributen sida i din rapportregion.

Här kan du även tillhandahålla en funktion som returnerar dina kolumnnamn. Var försiktig så att den här funktionen inte är tänkt att returnera en SQL-fråga som själv returnerar kolumnnamn, utan istället returnera kolumnnamn avgränsade med ett kolon .

Med den här metoden är det lättare att identifiera och referera till dina kolumner i designern:

Alternativ 3:Både och

Stäng av allmänna kolumnnamn, låt din fråga returnera kolumnnamn som lätt kan identifieras och refereras till, och använd de custom column headings funktion returnerar utförliga namn för dina användare.

Min personliga åsikt

Jag använder det tredje alternativet i en produktionsapplikation där människor själva kan ändra mängden och ordningen på kolumner med hjälp av skyttelobjekt på rapportsidan. Det tog lite tid, men nu fungerar det som en charm, som någon dynamisk PIVOT utan PIVOT .




  1. Ändra SQL Server-sortering till skiftlägesokänslig från skiftlägeskänslig?

  2. mysql ft_min_word_len ändring på ubuntu fungerar inte

  3. Sänd MySQL-databastabelldata i realtid

  4. Utlösa if-else-satsfelet höjs inte