|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Invité de passage
![]() Inscription : décembre 2002 Messages : 6 ![]() |
Bonjour,
Je veux écrire une procédure PL/SQL dans laquelle j'accède à des champs d'un rowtype passé en paramètre de manière dynamique (les noms des champs sont issus d'une table). Le code ressemble à celui ci : Code :
Quelqu'un a t il une idée? D'avance merci |
||
|
|
00
|
|
|
#2 |
![]() ![]() Consultant en Business Intelligence Inscription : janvier 2007 Messages : 1 192 ![]() |
Bonjour,
Peut être qu'un curseur sur les colonnes de ta table pourrais être utilisé... Il suffirait ensuite de boucler sur ces colonnes pour la comparaison. C'est peut être une piste |
|
|
00
|
|
|
#3 |
|
Invité de passage
![]() Inscription : décembre 2002 Messages : 6 ![]() |
Merci pour ta réponse, mais je ne comprends pas bien :
à chaque boucle, je connais le nom de la colonne à laquelle je veux accéder, le problème est que je ne sais pas comment y accéder... La structure des données est un rowtype, et en SQL dynamique, j'ai l'impression qu'on ne peut accéder qu'à des objets en base. Je cherche donc à savoir s'il existe une syntaxe (en SQL dynamique ou non) qui permette d'accéder aux colonnes autrement qu'en les nommant explicitement... |
|
|
00
|
|
|
#4 |
|
Expert Confirmé
![]() Inscription : février 2006 Messages : 3 433 ![]() |
Je ne vois que le package DBMS_SQL qui permet d'accéder par position à une colonne résultat d'une requête; voir l'exemple n° 3 dans http://download-uk.oracle.com/docs/c...htm#sthref7418
|
|
|
00
|
|
|
#5 |
![]() ![]() ![]() Inscription : mai 2003 Messages : 6 533 ![]() |
Vous pouvez également vous inspirer de la deuxième partie de l'article suivant:
http://sheikyerbouti.developpez.com/dynamic/dynamic.htm
__________________
Rédacteur Oracle (Oracle ACE) Guide Oracle ,Guide PL/SQL, Guide Forms 9i/10g, Index de recherche Je ne réponds pas aux questions techniques par MP Blogs: Forms-PL/SQL-J2EE - Forms Java Beans |
|
|
00
|
|
|
#6 |
|
Invité de passage
![]() Inscription : décembre 2002 Messages : 6 ![]() |
Merci, mais dans les 2 solutions, la source doit être une table et pas un ROWTYPE, non ?
Quelque chose m'echappe, j'ai beau regarder tous les exemples, je n'arrive pas à les ramener au cas qui me préoccupe.. |
|
|
00
|
|
|
#7 |
![]() ![]() ![]() Inscription : mai 2003 Messages : 6 533 ![]() |
Il se peut que le cas qui vous préoccupe doive être légèrement adapté.
Ce que vous souhaitez, en somme est passer un record à votre procédure pour en obtenir les champs. %ROWTYPE peut être considéré comme un record interne et peut donc également être traité comme une ligne d'une collection. D'où le rapport avec l'article cité. Toujours est-il que toutes les solutions passent par l'utilisation du package DBMS_SQL.
__________________
Rédacteur Oracle (Oracle ACE) Guide Oracle ,Guide PL/SQL, Guide Forms 9i/10g, Index de recherche Je ne réponds pas aux questions techniques par MP Blogs: Forms-PL/SQL-J2EE - Forms Java Beans |
|
|
00
|
|
|
#8 |
![]() ![]() Consultant en Business Intelligence Inscription : janvier 2007 Messages : 1 192 ![]() |
Bonjour,
Je reviens vers vous pour préciser ma pensée ... J'avais en tête de faire un curseur dans la procédure "COMPARE_CHAMPS" qui fasse quelque chose comme : Code :
SELECT column_name FROM USER_TAB_COLUMNS WHERE table_name='MATABLE'; REM : tu peux même récupérer le data_type si tu veux. Voili, voilou |
|
|
00
|
|
|
#9 |
|
Invité de passage
![]() Inscription : décembre 2002 Messages : 6 ![]() |
Je vous remercie pour vos réponses, malheureusement, je n'ai pas réussi à faire ce que je voulais...
J'ai quand même trouvé une solution de contournement en passant par une table temporaire... |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com