Oracle
 sql >> Base de données >  >> RDS >> Oracle

comment passer un nom de table en paramètre à une procédure stockée ?

Vous ne pouvez pas créer un %ROWTYPE variable pour une table inconnue et vous ne pouvez pas faire référence statiquement aux noms de colonne lorsque vous ne connaissez pas le nom de la table au moment de la compilation.

Vous pouvez utiliser le package dbms_sql pour gérer des instructions SQL entièrement dynamiques. Vous devrez préparer l'instruction SQL, décrire les colonnes pour connaître le nombre de colonnes et leurs types de données, lier les variables appropriées, puis récupérer les données. C'est une façon beaucoup plus lourde d'écrire du code que l'exemple que vous avez publié, mais cela vous donne une flexibilité extrême.

Il existe un certain nombre d'exemples d'utilisation du package dbms_sql dans la documentation à laquelle j'ai lié. Vous pouvez également consulter la fonction dump_csv de Tom Kyte qui écrit le résultat d'une requête arbitraire dans un fichier CSV en utilisant UTL_FILE . Si vous voulez vraiment écrire les données dans DBMS_OUTPUT , vous pouvez simplement remplacer le UTL_FILE appels avec DBMS_OUTPUT . Mais je suis sûr que vous voulez faire quelque chose de plus utile que de simplement écrire les données dans le DBMS_OUTPUT tampon afin que la procédure de Tom soit probablement plus proche de ce que vous essayez réellement d'accomplir.