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

come passare un nome di tabella come parametro alla procedura memorizzata?

Non puoi creare un %ROWTYPE variabile per una tabella sconosciuta e non puoi fare riferimento staticamente ai nomi delle colonne se non conosci il nome della tabella in fase di compilazione.

È possibile utilizzare il pacchetto dbms_sql per gestire istruzioni SQL completamente dinamiche. Dovrai preparare l'istruzione SQL, descrivere le colonne per scoprire il numero di colonne e i relativi tipi di dati, associare le variabili appropriate e quindi recuperare i dati. È un modo molto più ingombrante di scrivere codice rispetto all'esempio che hai pubblicato, ma ti offre un'estrema flessibilità.

Ci sono una serie di esempi di utilizzo del pacchetto dbms_sql nella documentazione a cui ho collegato. Potresti anche voler controllare la funzione dump_csv di Tom Kyte che scrive il risultato di una query arbitraria in un file CSV usando UTL_FILE . Se vuoi davvero scrivere i dati in DBMS_OUTPUT , puoi semplicemente sostituire UTL_FILE chiamate con DBMS_OUTPUT . Ma sono abbastanza sicuro che tu voglia fare qualcosa di più utile che scrivere semplicemente i dati nel DBMS_OUTPUT buffer quindi la procedura di Tom è probabilmente più vicina a ciò che stai veramente cercando di ottenere.