#1 Wed 20 January 2010 10:24
- Tom_s6915
- Juste Inscrit !
- Date d'inscription: 20 Jan 2010
- Messages: 5
Récupérer un numéro de séquence via sqlExecutor
Bonjour à tous.
Je suis nouveau sur le forum et je débute en FME.
Je travail avec l'outil FME Workbench.
je souhaite réaliser un petit traitement qui va me permettre de rajouter ou mettre à jour des données dans une base Oracle 10 à partir d'une base externe (Access pour mes tests).
L'ajout ou la mise à jour des données marche, à part pour un champ (IDENT) qui est normalement mis à jour par une séquence Oracle.
ce que je pensais faire c'est donc de récupérer le numéro de séquence via une requête dans le transformer SQLExecutor.
Dans ce transformer j'ai créée un nouvel attribut (_ident) qui doit, normalement, récupérer le numéro?
après ce transformer j'utilise un ListExploder, puis un AttributeRenamer (_ident vers IDENT).
Le problème est :
_ toutes mes lignes de la base Access se trouvent bien dans la base Oracle (ça c'est bon)
_ le champ IDENT n'est pas renseigné... (ça c'est pas bon)
en connectant un Visualizer, je ne vois pas l'attribut _ident, par contre j'ai un "MaSequence.NEXTVAL" qui lui, a bien le numéro que je veux récupérer.
Donc je ne comprends pas comment je peux récupérer le numéro de ma séquence. J'ai oublié quelque chose? Ce n'est pas la bonne méthode?
J'espère avoir été assez clair dans mes explications.
Merci d'avance pour votre aide et vos conseils.
Tom_s
ps : pour info, je me suis basé sur ça : http://www.fmepedia.com/index.php/SQLExecutor
Hors ligne
#2 Wed 20 January 2010 10:30
- Pierre
- DesCartesPourUnMondeMeilleur
- Date d'inscription: 22 Sep 2005
- Messages: 1643
Re: Récupérer un numéro de séquence via sqlExecutor
Aloha
Quelques pistes d'améliorations mais aussi quelques questions :
Pourquoi utiliser un ListExploder ?
Peut-être faut-il préférer un AttributeCopier à l'AttributeRenamer ?
Comment fonctionne votre séquence Oracle ? Est-elle lancée à chaque création/màj d'objet ? Je suppose que "MaSequence.NEXTVAL" correspond à la définition de votre séquence, ou du moins de votre requête dans SQLExecutor. Avez-vous bien indiqué de renvoyer le résultat de votre requête dans le champ _ident dans les propriétés du SQLExecutor ?
Cordialement,
art X I. Déclaration des Droits de l’Homme et du Citoyen 1789
La libre communication des pensées et des opinions est un des droits les plus précieux de l’Homme : tout Citoyen peut donc parler, écrire, imprimer librement, sauf à répondre de l’abus de cette liberté, dans les cas déterminés par la Loi.
Hors ligne
#3 Wed 20 January 2010 10:47
- Tom_s6915
- Juste Inscrit !
- Date d'inscription: 20 Jan 2010
- Messages: 5
Re: Récupérer un numéro de séquence via sqlExecutor
Merci pour votre réponse. J'ai trouvé pourquoi cela ne fonctionnait pas entre temps...
Dans ma requête, je n'avais pas mis << as \"_Ident\" >> pour mon NEXTVAL... je me doutais bien que c'était un oubli (tout bête) de ma part... et donc c'est bien une des pistes que vous avez cité ! j'aurai du mettre ma requête dans le post, cela aurait été plus simple pour vous...
Pour répondre aux questions :
Pourquoi utiliser un ListExploder ?
Il me permet d'avoir accès à mon attribut "_ident", le voir dans AttributeRenamer. sinon je n'ai pas accès au résultat de ma requête. ou alors il y a une autre méthode plus directe ?
Peut-être faut-il préférer un AttributeCopier à l'AttributeRenamer ?
Parce que je n'y ai pas pensé ;p
Encore merci et surement à bientôt
Cordialement,
Tom_s
Hors ligne
#4 Wed 20 January 2010 11:53
Re: Récupérer un numéro de séquence via sqlExecutor
Je vous conseille de ne pas spécifier de nom de liste dans SqlExecutor puisque votre requête ne renvoie qu'un enregistrement. Le traitement sera ensuite plus facile, ListExploder étant inutile.
Hors ligne
#5 Wed 20 January 2010 16:34
- Tom_s6915
- Juste Inscrit !
- Date d'inscription: 20 Jan 2010
- Messages: 5
Re: Récupérer un numéro de séquence via sqlExecutor
D'accord, merci beaucoup.
Hors ligne