sql >> Database >  >> RDS >> Oracle

hoe een tabelnaam als parameter doorgeven aan de opgeslagen procedure?

U kunt geen %ROWTYPE maken variabele voor een onbekende tabel en u kunt niet statisch verwijzen naar kolomnamen als u de tabelnaam niet weet tijdens het compileren.

U kunt het pakket dbms_sql gebruiken om met volledig dynamische SQL-instructies om te gaan. U moet de SQL-instructie voorbereiden, de kolommen beschrijven om het aantal kolommen en hun gegevenstypen te achterhalen, de juiste variabelen binden en vervolgens de gegevens ophalen. Het is een veel omslachtigere manier om code te schrijven dan het voorbeeld dat je hebt gepost, maar het geeft je extreme flexibiliteit.

Er zijn een aantal voorbeelden van het gebruik van het dbms_sql-pakket in de documentatie waarnaar ik heb gelinkt. Misschien wil je ook de dump_csv-functie van Tom Kyte eens bekijken, die het resultaat van een willekeurige query naar een CSV-bestand schrijft met behulp van UTL_FILE . Als u de gegevens echt naar DBMS_OUTPUT . wilt schrijven , kunt u eenvoudig de UTL_FILE . vervangen oproepen met DBMS_OUTPUT . Maar ik ben er vrij zeker van dat u iets nuttigers wilt doen dan alleen de gegevens naar de DBMS_OUTPUT te schrijven buffer, dus Tom's procedure is waarschijnlijk dichter bij wat je echt probeert te bereiken.




  1. Een web-app maken vanaf nul met Python Flask en MySQL:deel 3

  2. Postgres - MAAK TABEL UIT SELECT

  3. C#-geparametriseerde queries voor Oracle - serieuze en gevaarlijke bug!

  4. 9.6 Engste Patch Toernooi