banniere

Le portail francophone de la géomatique


Toujours pas inscrit ? Mot de passe oublié ?
Nom d'utilisateur    Mot de passe              Toujours pas inscrit ?   Mot de passe oublié ?

Annonce

GEODATA DAYS 2024

#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

ogayte
Participant assidu
Lieu: Saint-Estève
Date d'inscription: 6 Mar 2006
Messages: 658
Site web

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.


Olivier Gayte
http://www.veremes.com
+33 (0)4-68-38-65-27

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

 

Pied de page des forums

Powered by FluxBB