Du kan inte skapa en %ROWTYPE
variabel för en okänd tabell och du kan inte statiskt referera till kolumnnamn när du inte känner till tabellnamnet vid kompileringstillfället.
Du kan använda paketet dbms_sql för att hantera helt dynamiska SQL-satser. Du måste förbereda SQL-satsen, beskriva kolumnerna för att ta reda på antalet kolumner och deras datatyper, binda lämpliga variabler och sedan hämta data. Det är ett mycket mer besvärligt sätt att skriva kod än exemplet du postade men det ger dig extrem flexibilitet.
Det finns ett antal exempel på att använda paketet dbms_sql i dokumentationen jag länkade till. Du kanske också vill kolla in Tom Kytes dump_csv-funktion som skriver resultatet av en godtycklig fråga till en CSV-fil med UTL_FILE
. Om du verkligen vill skriva data till DBMS_OUTPUT
, kan du helt enkelt ersätta UTL_FILE
samtal med DBMS_OUTPUT
. Men jag är ganska säker på att du vill göra något mer användbart än att bara skriva data till DBMS_OUTPUT
buffert så Toms procedur är förmodligen närmare det du verkligen försöker åstadkomma.