EXÉCUTION IMMÉDIATE en plsql
Comment obtenir un résultat de ce code
EXECUTE IMMEDIATE 'SELECT * FROM ' || table_name
par pour la boucle
La méthode habituelle ressemble à ceci
for items in (select * from this_table)
loop
htp.p(items.id);
end loop;
OriginalL'auteur | 2011-01-26
Vous devez vous connecter pour publier un commentaire.
Si vous vraiment besoin de
select * from
dynamique nom de la table, alors je serais probablement aller avecdbms_sql
Pour un Type d' enregistrement:
Pour un Type d' ensemble de résultats (qui est un tableau de enregistrements):
La fonction qui fait le sélectionner et retourne une instance de la ensemble de résultats:
La fonction peut être utilisée avec quelque chose comme:
OriginalL'auteur René Nyffenegger
Ici est une fonction simple qui ouvre dynamiquement une variable de curseur, en utilisant le passé paramètre de nom de table.
Il utilise également la DEPTNO comme un filtre; par conséquent, la fonction échouera si l'on fait passer un tableau qui n'a pas une telle colonne.
Certains clients peuvent interpréter le curseur de référence des métadonnées. Par exemple JDBC et ODBC jeux de résultats peuvent le faire. SQL*Plus, peut le faire:
PL/SQL ne peut pas faire cela. Nous avons donc besoin d'être explicite sur la table et les noms de colonne.
Nous allons voir ça en cours d'exécution:
OriginalL'auteur APC
Vous devez déclarer un curseur à partir du sql dynamique et boucle à travers elle.
Un exemple de ce qui est disponible dans le manuel:
http://download.oracle.com/docs/cd/B19306_01/appdev.102/b14261/dynamic.htm#CHDJHAHE
Et je n'ai pas de problèmes avec Google 🙂
Afin de simplifier l'exemple, pour obtenir ce que VOUS voulez - OUVRIR emp_cv POUR 'SELECT * from' || table_name; BOUCLE ... END LOOP;
Je me soucie de ce moment OPEN emp_cv
Vous ne pouvez pas dire POUR les éléments de ('SELECT * from ' || table_name') comme vous l'avez sans doute découvert. Donc, vous DEVEZ déclarer la variable de curseur.
OriginalL'auteur a_horse_with_no_name
J'ai considéré table_name référés à un seul varchar2 colonne de la table de sorte id contiendra la valeur actuelle de l'enregistrement de cette colonne
OriginalL'auteur vc 74