|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Invité de passage
![]() Migr Inscription : août 2010 Messages : 33 ![]() |
Bonjour,
J'ai un petit souci si vous pouvez me donner des idées. Je dois mettre à jour une table via une autre table qui contient des règles de transcodification. Exemple : table A (aa, cd_aa) table_transco ( bb, table_name, col_name, ancienValue, NewValue) jeux de données ; table A 90, 0 88, 2 table_transco 88, A, cd_aa, 2, 2 90, A, cd_aa, 0, 3 Je dois mettre à jour la valeur 0 du champ cd_aa avec la nouvelle valeur qui est 3. Je l'ai fait avec une proc stockée et ça marche. Le problème c'est qu'on me demande de stocker la requête qui fait l'update dans une table (est-ce que c'est une nouvelle table ou un champ de la table "table_transco" ?) et gérer cet "update" dynamiquement. Si vous avez des idées n'hésitez pas à m'en faire part. Merci beaucoup |
|
|
00
|
|
|
#2 | ||
|
Expert Confirmé Sénior
![]() Inscription : juillet 2003 Messages : 3 437 ![]() |
Code :
__________________
More Code : More Bugs. Less Code : Less Bugs |
||
|
|
00
|
|
|
#3 | |
|
Membre expérimenté
![]() Mohamed HouriInscription : mars 2010 Messages : 286 ![]() |
Citation:
En utilisant une procédure stockée (static PL/SL) pour faire votre update vous être protégé parce que: (1) Vous allez utiliser les bind variables automatiquement (PL/SQL statique) (2) Vous n’êtes pas sujet à la menace du ‘’SQL injection’’ (3) Vous êtes sûr de la compilation de votre package dès sa création En stockant l’update dans une table, vous allez devoir utiliser du sql dynamique pour exécuter votre update ; ainsi vous devez : (1) faire un effort supplémentaire pour l’utilisation des bind variables (2) vous êtes à la merci du ‘SQL injection’ (3) votre code n’est parsé qu’au moment de son exécution, et il se pourrait qu’il ne compile pas lors de cette exécution Bien à vous Mohamed Houri |
|
|
|
00
|
|
|
#4 |
|
Invité de passage
![]() Migr Inscription : août 2010 Messages : 33 ![]() |
Merci pour vos réponses.
La requete de McM a bien marché, sauf qu'elle me remplit la table "table_transco" qu'avec les lignes où il y a bien eu un changement sur la liste des valeurs. Dans mon cas j'ai bien eu: BB TABLE_NAME COL_NAME ANCIENVALUE NEWVALUE REQ_UPDATE 88 A cd_aa 2 2 90 A cd_aa 0 3 UPDATE A SET cd_aa=3 WHERE cd_aa=0 Je pense que je ne dois avoir dans cette table que les lignes où j'aurai la requête ?? je ne suis pas encore sûr. Ensuite j'utilise dans talend un composant input où je mets une requête sur cette table "table_transco" qui me renvoie TABLE_NAME, REQ_UPDATE puis un autre composant qui exécute cette requête sur la base. |
|
|
00
|
|
|
#5 | ||
|
Invité de passage
![]() Migr Inscription : août 2010 Messages : 33 ![]() |
J'ai une autre problématique :
j'ai une trable transformation qui a la structure suivante : (cle1, ordre, NomTable, requete) cette requete contient une règle sur un champ de "NomTable". exemple : Code :
Ce cas est différent du cas ci-dessus, je n'arrive pas à utiliser decode pour le faire. Merci pour votre aide. |
||
|
|
00
|
Copyright © 2000-2012 - www.developpez.com