sql >> Databasteknik >  >> RDS >> Oracle

hur skickar man ett tabellnamn som parameter till lagrad procedur?

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.




  1. Hur kan jag undvika hakparenteser i en LIKE-sats?

  2. Konfigurera e-postmeddelanden i databasen i MS SQL Server

  3. Hur exporterar man tabell som CSV med rubriker på Postgresql?

  4. django test app-fel - Fick ett fel när testdatabasen skapades:behörighet nekades att skapa databas