Du kan ikke oprette en %ROWTYPE
variabel for en ukendt tabel, og du kan ikke statisk henvise til kolonnenavne, når du ikke kender tabelnavnet på kompileringstidspunktet.
Du kan bruge pakken dbms_sql til at håndtere fuldstændig dynamiske SQL-sætninger. Du skal forberede SQL-sætningen, beskrive kolonnerne for at finde ud af antallet af kolonner og deres datatyper, binde passende variabler og derefter hente dataene. Det er en meget mere besværlig måde at skrive kode på end det eksempel, du postede, men det giver dig ekstrem fleksibilitet.
Der er en række eksempler på brug af dbms_sql-pakken i den dokumentation, jeg linkede til. Du vil måske også tjekke Tom Kytes dump_csv-funktion, som skriver resultatet af en vilkårlig forespørgsel til en CSV-fil ved hjælp af UTL_FILE
. Hvis du virkelig ønsker at skrive dataene til DBMS_OUTPUT
, kan du blot erstatte UTL_FILE
opkald med DBMS_OUTPUT
. Men jeg er ret sikker på, at du vil gøre noget mere nyttigt end blot at skrive dataene til DBMS_OUTPUT
buffer, så Toms procedure er sandsynligvis tættere på det, du virkelig forsøger at opnå.