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

hvordan sender man et tabelnavn som parameter til den lagrede procedure?

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å.




  1. SQL Server 2012 kolonneidentitetsstigning springer fra 6 til 1000+ på 7. indtastning

  2. App stoppede med at fungere på grund af database

  3. SQL Views:Hvordan arbejder man med Views i SQL?

  4. Fuldtekstsøgning i Postgres eller CouchDB?