#1 Fri 08 April 2011 15:16
- xav
- Participant assidu
- Date d'inscription: 27 Oct 2005
- Messages: 280
Executer une requette avant l'execution du traitement
Bonjour,
j'ai un traitement qui a en entré un SQLCreator (avec une requête oracle du type select at1, at2, at3,... from table1 where at1 not in (select at1 from table2) et en sortie une table oracle.
Le traitement fonctionne correctement mais je souhaiterais avant l'exécution du SQLCreator lancer une requête sur la base oracle et la je sèche un peu.
J'ai bien dans ma destination oracle le paramètre Instruction SQL à exécuter avant le traitement, mais selon la doc, dans le cas d'une destination la requête est exécutée juste avant la 1ere insertion dans la table alors que dans mon cas, il faut impérativement que la requête soit exécutée avant le sqlCreator.
Je ne vois que 2 solutions possibles mais qui ne me satisfont pas trop :
- soit passer par l'exécution d'un script Python ou TCL (mais je trouve ca un peu lourd de développer un script avec connexion a la base et exécution de la requête dans 2 langage que je ne maitrise pas trop tout ça juste pour une requête sql)
- soit mettre une source de donnée oracle avec ma requête dans le paramètre Instruction SQL à exécuter avant le traitement mais dans ce cas est-ce certain que la requête va s'exécuter obligatoirement avant le SQLCreator.
Quelqu'un aurait-il une piste pour affiner une de ces solutions ou en trouver une 3eme ?
Merci d'avance
Xavier Lang
Information géographique et observatoire - DSI Communautaire
Cap Atlantique
Hors ligne
#2 Sun 10 April 2011 19:22
Re: Executer une requette avant l'execution du traitement
Utilisez un CREATOR.
Les creator sont censés être exécutés en début de traitement avant que les entités ne soient lues.
Connectez un sqlexecutor à votre creator et vous devriez voir votre requête exécutée avant les autres.
Si ça ne suffit pas, générez 2 entités avec votre créator. un TESTER sur _creation_instance vous permettra de distinguer la première et la deuxième. renvoyez la première sur un nouveau sqlexecutor (ou classicsqlexecutor) et la deuxième vers un autre sqlexecutor qui remplacera votre SQLCreator actuel.
Hors ligne
#3 Mon 11 April 2011 10:29
- xav
- Participant assidu
- Date d'inscription: 27 Oct 2005
- Messages: 280
Re: Executer une requette avant l'execution du traitement
J'ai tester les solutions mais même avec le test sur _creation_instance, la requête n'etait pas exécute avant le sqlcreator (ou le 2° sqlexecutor).
Mais j'ai résolu mon problème en découpant mon traitement en 2, 1er traitement qui exécute ma requête et 2° traitement avec le sqlcreator
et dans un 3eme traitement j'enchaine les 2 1er traitements avec des workspacerunner.
Merci pour l'aide
Xavier Lang
Information géographique et observatoire - DSI Communautaire
Cap Atlantique
Hors ligne