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 :

Mettre le résultat d'une requête SQL dans une variable


Sujet :

Développement de jobs

  1. #1
    Membre du Club
    Profil pro
    None
    Inscrit en
    Avril 2012
    Messages
    53
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : None

    Informations forums :
    Inscription : Avril 2012
    Messages : 53
    Points : 59
    Points
    59
    Par défaut Mettre le résultat d'une requête SQL dans une variable
    Bonjour à tous,

    Je suis nouveau sur Talend, et j'essaye de faire un job spécifique mais je ne sais pas comment m'y prendre.

    Je veux que le résultat d'une requête SQL (select max(id) from ma_table) soit stocké dans une variable que je vais utiliser par la suite pour faire des tests.

    Je sais que la requête sera exécutée via tMysqlinput, le résultat s'affiche bel et bien avec un tlogrow, cependant je ne sais pas comment faire pour mettre le résultat dans une variable java.

    Avez vous une idée s'il vous plait ?

    Merci d'avance

    Cordialement,

  2. #2
    Expert confirmé
    Avatar de Ph. B.
    Homme Profil pro
    Freelance
    Inscrit en
    Avril 2002
    Messages
    1 784
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2002
    Messages : 1 784
    Points : 5 915
    Points
    5 915
    Par défaut
    Bonjour,
    Citation Envoyé par pomolo11 Voir le message
    Je veux que le résultat d'une requête SQL (select max(id) from ma_table) soit stocké dans une variable que je vais utiliser par la suite pour faire des tests.

    Je sais que la requête sera exécutée via tMysqlinput, le résultat s'affiche bel et bien avec un tlogrow, cependant je ne sais pas comment faire pour mettre le résultat dans une variable java.
    Une solution parmi d'autres :
    tMySqlInput ---in---> tLogRow ---out---> tMsgBox

    Dans la propriété Requête du composant tMySqlInput, saisissez : SELECT MAX(ID) AS MAXID FROM MA_TABLE.
    Dans la propriété Message du composant tMsgBox, saisissez : "MAXID=" + ((Integer) out.MAXID).toString()

    Le résultat est donc dans out.MAXID. A adapter suivant le nom de vos composants et de leur flux...
    Philippe.

  3. #3
    Membre éclairé Avatar de MythOnirie
    Homme Profil pro
    Développeur décisionnel
    Inscrit en
    Juin 2012
    Messages
    376
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur décisionnel

    Informations forums :
    Inscription : Juin 2012
    Messages : 376
    Points : 795
    Points
    795
    Par défaut
    Bonjour.

    Pour cela tu peux passer par le composant tSetglobalVar où tu crée un ligne avec d'un coté le nom que tu veux donner à ta variable (par exemple "maValeur") et de l'autre son identifiant (du type row1.MaVar).

    Lorsque tu voudra utiliser ta valeur, tu n'aura qu'à l'appeler à l'aide du code (Integer)globalMap.get("maValeur") ;

  4. #4
    Membre du Club
    Profil pro
    None
    Inscrit en
    Avril 2012
    Messages
    53
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : None

    Informations forums :
    Inscription : Avril 2012
    Messages : 53
    Points : 59
    Points
    59
    Par défaut
    @ Ph.B. : J'ai essayé ta proposition, j'ai une erreur (out ne peut pas être résolu au tant que variable) :\

    @ MythOnirie : Je n'ai pas compris le row1.mavar ? Est ce que je ne dois rien paramétrer du côté du tmysqlinput ?


    Merci pour vos retours

  5. #5
    Expert confirmé
    Avatar de Ph. B.
    Homme Profil pro
    Freelance
    Inscrit en
    Avril 2002
    Messages
    1 784
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2002
    Messages : 1 784
    Points : 5 915
    Points
    5 915
    Par défaut
    Citation Envoyé par pomolo11 Voir le message
    @ Ph.B. : J'ai essayé ta proposition, j'ai une erreur (out ne peut pas être résolu au tant que variable) :\

    @ MythOnirie : Je n'ai pas compris le row1.mavar ? Est ce que je ne dois rien paramétrer du côté du tmysqlinput ?
    Dans le schéma qui m'a servi de référence (cf. post précédent), le flux de sortie était nommé out, dans votre schéma, c'est peut-être row2 ou le nom que vous lui avez donné...
    Votre variable doit être préfixée du nom de flux correspondant.
    Philippe.

  6. #6
    Membre du Club
    Profil pro
    None
    Inscrit en
    Avril 2012
    Messages
    53
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : None

    Informations forums :
    Inscription : Avril 2012
    Messages : 53
    Points : 59
    Points
    59
    Par défaut
    Re,

    Ca à marché finalement, mais je n'arrive pas à avoir le résultat dans une variable directement.

    Si je mets un tjava à la place du msgbox j'ai un null dans out.IDMAX :\

    Des idées ??

  7. #7
    Expert confirmé
    Avatar de Ph. B.
    Homme Profil pro
    Freelance
    Inscrit en
    Avril 2002
    Messages
    1 784
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2002
    Messages : 1 784
    Points : 5 915
    Points
    5 915
    Par défaut
    Citation Envoyé par pomolo11 Voir le message
    Ca à marché finalement, mais je n'arrive pas à avoir le résultat dans une variable directement.

    Si je mets un tjava à la place du msgbox j'ai un null dans out.IDMAX :\
    Un tJavaRow, une variable dans le contexte et comme code context.MaxID = input_row.MAXID;
    Citation Envoyé par pomolo11 Voir le message
    Des idées ??
    Ben, avec un schéma montrant ce que vous voulez faire, ça aiderait...
    Philippe.

  8. #8
    Membre du Club
    Profil pro
    None
    Inscrit en
    Avril 2012
    Messages
    53
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : None

    Informations forums :
    Inscription : Avril 2012
    Messages : 53
    Points : 59
    Points
    59
    Par défaut
    C'est bon, il fallait que je mette un tjavarow au lieu d'un tjava, ce dernier ne récupère pas la variable en sortie de ce qui est avant

    Merci bcp pour ton aide !!

    Bonne soirée.

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 12/12/2011, 10h07
  2. erreur dans une requête sql dans une fonction php
    Par frboyer dans le forum Langage
    Réponses: 3
    Dernier message: 07/04/2009, 13h37
  3. Réponses: 5
    Dernier message: 26/02/2008, 12h45
  4. Récuperer le résultat d'une requête SQL dans une variable
    Par DashRendar dans le forum Accès aux données
    Réponses: 3
    Dernier message: 24/01/2008, 11h04
  5. Réponses: 13
    Dernier message: 26/07/2007, 08h50

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