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 :
Le problème est qu'en SQL dynamique, les variables ROWTYPE ne sont pas connues, il faut donc que je trouve un moyen d'accéder aux différents champs du rowtype sans connaitre leur nom à priori...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19PROCEDURE "COMPARE_CHAMPS" ( p_anciennes_valeurs IN MATABLE%ROWTYPE, p_nouvelles_valeurs IN MATABLE%ROWTYPE ) IS ancienneVal VARCHAR(250); nouvelleVal VARCHAR(250); BEGIN FOR maligne in (SELECT * FROM MATABLE_COLONNES) LOOP -- Pour chaque colonne à surveiller, on regarde si la valeur a changée. EXECUTE IMMEDIATE 'SELECT p_ancien_trade.'||TMCRow.TMC_NOM||' FROM DUAL' INTO ancienneVal; EXECUTE IMMEDIATE 'SELECT p_nouveau_trade.'||TMCRow.TMC_NOM||' FROM DUAL' INTO nouvelleVal; IF ancienneVal<>nouvelleVal THEN -- La valeur a changé, on insère la modif. END IF; END LOOP; END COMPARE_TRADES;
Quelqu'un a t il une idée?
D'avance merci





Répondre avec citation









Partager