IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Développement de jobs Discussion :

[Talend]Utiliser une variable de l'input row7.nombre dans un t_oracleRow


Sujet :

Développement de jobs

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    117
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 117
    Points : 67
    Points
    67
    Par défaut [Talend]Utiliser une variable de l'input row7.nombre dans un t_oracleRow
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    UPDATE T_CO_REF_IDENTIFIANT_TIERS
    SET T_CO_REF_IDENTIFIANT_TIERS.CURRENT_NUMBER=IcareConversion.identifiant_suivant_numero(row7.lettre,row7.nombre)

    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 ?

  2. #2
    Membre averti Avatar de bouvda
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    252
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Octobre 2005
    Messages : 252
    Points : 318
    Points
    318
    Par défaut
    Bonjour,

    normalement un tOracleRow reconnaît les structures qu'il a en entrée. Donc en faisant ainsi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    "UPDATE T_CO_REF_IDENTIFIANT_TIERS
    SET T_CO_REF_IDENTIFIANT_TIERS.CURRENT_NUMBER=IcareConversion.identifiant_suivant_numero("+row7.lettre+","+row7.nombre+")"
    ça devrait fonctionner.

  3. #3
    Membre averti Avatar de bouvda
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    252
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Octobre 2005
    Messages : 252
    Points : 318
    Points
    318
    Par défaut
    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

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    117
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 117
    Points : 67
    Points
    67
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Exception in component tRunJob_1
    java.lang.Exception: Exception in thread "main" java.lang.Error: Unresolved compilation problem: 
    	String literal is not properly closed by a double-quote
     
    	at infocentre_eurica.alimentation_tiers_distributeur.alimentation_tiers_distributeur.tOracleInput_1Process(alimentation_tiers_distributeur.java:733)
    et en ligne 733 c'est la requête de mon t_oracleRow


    Ah depuis la mise à jour il fait une erreur sur tous mes T_OracleRow.....:
    String literal is not properly closed by a double-quote

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    117
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 117
    Points : 67
    Points
    67
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    pstmt_tOracleRow_6 = conn_tOracleRow_6
    .prepareStatement("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 + ")");

  6. #6
    Membre averti Avatar de bouvda
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    252
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Octobre 2005
    Messages : 252
    Points : 318
    Points
    318
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    pstmt_tOracleRow_6 = conn_tOracleRow_6
    .prepareStatement("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 + ")");

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    117
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 117
    Points : 67
    Points
    67
    Par défaut
    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?

  8. #8
    Membre averti Avatar de bouvda
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    252
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Octobre 2005
    Messages : 252
    Points : 318
    Points
    318
    Par défaut
    Il faut la mettre en dehors des double quotes si c'est une routine définie dans Talend. Le requête deviendrait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "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)

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    117
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 117
    Points : 67
    Points
    67
    Par défaut
    merci ça fonctionne mieux.

    Bonne journée

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. countdown utilisant une variable provenant d'une input box
    Par eurytos dans le forum ActionScript 1 & ActionScript 2
    Réponses: 3
    Dernier message: 27/11/2012, 10h02
  2. Utiliser une variable comme nom de table Access dans une requête SQL
    Par stsym dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 09/10/2011, 17h11
  3. Réponses: 6
    Dernier message: 08/06/2010, 12h15
  4. [curseurs] utiliser une variable comme nom de champ
    Par Christian31 dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 09/09/2005, 14h12
  5. [XSL] utiliser une variable pour nom d'élément
    Par luta dans le forum XSL/XSLT/XPATH
    Réponses: 13
    Dernier message: 07/09/2004, 13h58

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo