|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Nouveau Membre du Club
![]() Inscription : juin 2006 Messages : 109 ![]() |
Bonjour,
J'ai un OracleInput qui sélectionne la valeur d'un nombre. Cet input est relié à un t_OracleRow dans lequel je met à jour une table grâce à une routine personnel et à une variable row7.nombre de mon input. Il n'a pas l'air de reconnaitre cette variable. Est ce possible 'utiliser une variable d'un row dans un OracleRow? Voici mon code, il me fait une erreur de syntax sql. Code :
Je pensais sinon à utiliser un javaRow entre les deux,avec l'affectation à une variable mais est ce que je pourrais utiliser la variable de mon input dans le javaRow ? |
||
|
|
00
|
|
|
#2 | ||
|
Membre éclairé
![]() |
Bonjour,
normalement un tOracleRow reconnaît les structures qu'il a en entrée. Donc en faisant ainsi : Code :
|
||
|
|
00
|
|
|
#3 |
|
Membre éclairé
![]() |
Autant pour moi, par défaut les composants t[Base de données]Row ne permettent pas de changer la requête dynamiquement en cours d'exécution (ils connaissent bien les entrées mais ne les évaluent qu'au tout début alors que l'extraction n'a pas encore commencé). Ca fonctionne pour moi car j'avais modifié certains composants.
Voici un tOracleRow modifié qui devrait fonctionner avec la requête que j'ai indiquée : tOracleRow.zip |
|
|
00
|
|
|
#4 | ||
|
Nouveau Membre du Club
![]() Inscription : juin 2006 Messages : 109 ![]() |
ok, j'ai dezzipé le fichier dans les plugins et les composents talend.
J'ai redémarré mon Talend et j'ai supprimé mon oracleRow et inséré un nouveau. et voici mon erreur: Code :
Ah depuis la mise à jour il fait une erreur sur tous mes T_OracleRow.....: String literal is not properly closed by a double-quote |
||
|
|
00
|
|
|
#5 | ||
|
Nouveau Membre du Club
![]() Inscription : juin 2006 Messages : 109 ![]() |
Dans mes autres TOracleRow, j'ai tout mis sur une ligne, je n'ai plus d'erreur de double quote.
Mais dans celui qui prend les variables, il fait une erreur : Exception in component tOracleRow_6 java.lang.RuntimeException: Execution failure, there might be an error in your SQL syntax. at infocentre_eurica.alimentation_tiers_distributeur.alimentation_tiers_distributeur.tOracleInput_4Process(alimentation_tiers_distributeur.java:2551) dans le code j'ai ça: Code :
|
||
|
|
00
|
|
|
#6 | ||
|
Membre éclairé
![]() |
La requête m'a pourtant l'air correcte...
Ne faudrait-il pas des simples quotes autour du premier paramètre des fonctions appelées dans la requête ? Ce qui donnerait dans le code : Code :
|
||
|
|
00
|
|
|
#7 |
|
Nouveau Membre du Club
![]() Inscription : juin 2006 Messages : 109 ![]() |
Bonjour,
en fait je crois que c'est la routine qu'il n'arrive pas à exécuter car si je mets des données en dur à la place de mes row7.lettre et row7.nombre, ça ne fonctionne pas non plus. dans mes T_map une routine identique fonctionne. si ma routine était : TalendDate.getCurrentDate() est ce que dans le tOracleRow je devrais mettre pour qu'elle s'exécute? System.TalendDate.getCurrentDate() ou faut -t-il mettre la routine en dehors des doubles cotes? |
|
|
00
|
|
|
#8 |
|
Membre éclairé
![]() |
Il faut la mettre en dehors des double quotes si c'est une routine définie dans Talend. Le requête deviendrait :
Code :
"UPDATE DBADWH.T_CO_REF_IDENTIFIANT_TIERS SET DBADWH.T_CO_REF_IDENTIFIANT_TIERS.CURRENT_LETTER='"+IcareConversion.identifiant_suivant_lettre(row7.lettre,row7.nombre,"A")+ "', DBADWH.T_CO_REF_IDENTIFIANT_TIERS.CURRENT_NUMBER="+IcareConversion.identifiant_suivant_numero(row7.lettre,row7.nombre) |
|
|
00
|
|
|
#9 |
|
Nouveau Membre du Club
![]() Inscription : juin 2006 Messages : 109 ![]() |
merci ça fonctionne mieux.
Bonne journée |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com