sql >> Database teknologi >  >> RDS >> Oracle

Er der en måde at vise dynamiske kolonner i Oracle apex

Et generelt tip først:Udskriv din variabel l_sql til din konsol ved hjælp af dbms_output.put_line eller brug en form for fejlretningstabel, hvor du kan indsætte den i. Vær også forsigtig med datatypen for den pågældende variabel. Hvis du har brug for at udvide SQL'en, kan du nå et punkt, hvor du skal bruge en CLOB variabel i stedet for varchar2 .

Du bliver nødt til at levere tabelstrukturer og testdata, hvis du gerne vil have dit problem analyseret fuldstændigt, derfor vil jeg først give dig nogle generelle forklaringer:

Use Generic Column Names er ok, hvis du har en permanent, uforanderlig mængde af kolonner. Men hvis rækkefølgen af ​​dine kolonner eller endda beløbet kan ændre sig, er det en dårlig idé, da din side vil vise en fejl, hvis din forespørgsel resulterer i flere kolonner end Generic Column Count

Mulighed 1:Brug kolonnealiasser i din forespørgsel

Forbedre din PL/SQL Function Body returning SQL Query på en måde, så den udsender detaljerede visningsnavne, som dette:

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

Det ser sådan ud:

Det har den ulempe, at kolonnenavnene også vises på denne måde i designeren og APEX vil kun opdatere disse kolonnenavne, hvis du genvaliderer funktionen. Du vil have svært ved at henvise til en kolonne med det interne navn på Your verbose column name i en proceskode eller dynamisk handling.

Det virker dog stadig, selvom du ændrer kolonnenavnene uden at fortælle APEX det, for eksempel ved at eksternalisere PL/SQL Function Body til en rigtig funktion.

Mulighed 2:Brug tilpassede kolonneoverskrifter

En lille smule skjult, men der er også mulighed for helt tilpassede kolonneoverskrifter. Det er næsten i slutningen af ​​attributterne side i din rapportregion.

Her kan du også levere en funktion, der returnerer dine kolonnenavne. Vær forsigtig med, at denne funktion ikke skal returnere en SQL-forespørgsel, der selv returnerer kolonnenavne, men i stedet returnerer kolonnenavne adskilt af et kolon .

Med denne metode er det nemmere at identificere og referere til dine kolonner i designeren:

Mulighed 3:Begge dele

Slå Generiske kolonnenavne fra, lad din forespørgsel returnere kolonnenavne, der let kan identificeres og refereres til, og brug custom column headings funktion returnerer verbose navne for dine brugere.

Min personlige mening

Jeg bruger den 3. mulighed i en produktionsapplikation, hvor folk selv kan ændre mængden og rækkefølgen af ​​kolonner ved hjælp af shuttle-elementer på rapportsiden. Det tog noget tid, men nu fungerer det som en charme, som en eller anden dynamisk PIVOT uden PIVOT .




  1. MySQL backup og gendannelse fra kommandolinje

  2. Subtraktion mellem to sql-forespørgsler

  3. Adgangskoden er ikke bekræftet ved hjælp af funktionen password_verify

  4. JPA Entity class giver fejl med 2 @GeneratedValue felter