L'entrée de table prend en charge deux méthodes différentes de création de la dynamique SQL: Variable Substitution et insertion de données d'un flux entrant.
substitution variable
Voici ce que vous avez actuellement configuré dans le tableau d'entrée: Vous mettez $ {variable} quelque part et lorsque l'étape initialise, la valeur est collée sous forme de texte dans le SQL.
Parce que toutes les étapes initialisent en même temps dans une transformation, votre étape Javascript n'a pas eu le temps de définir la valeur. Dans PDI vous ne pouvez pas définir et utiliser une variable dans la même transformation.
données d'insertion à partir de l'étape
La deuxième façon est utilisée en sélectionnant une étape de source dans l'option « Insérer des données à partir de l'étape » dans l'entrée de table. Dans ce mode, l'entrée de table prend une ligne de l'étape sélectionnée et insère des champs (dans l'ordre) dans le SQL aux points d'interrogation (?) Que vous insérez. Normalement, il attend une seule ligne, mais vous pouvez choisir de l'exécuter pour CHAQUE ligne.
De cette façon devrait fonctionner pour votre scénario:
- Mettre une Générez des lignes étape au début et à définir pour générer 1 rang.
- Connectez-le à l'étape Javascript.
- Dans l'étape Javascript, spécifiez la variable de retour comme un champ de sortie dans la grille du bas, il sera ajouté au flux.
- Dans l'entrée de table, sélectionnez l'étape Javascript à "Insérer les données de l'étape"
- Dans votre SQL, insérer? à la position de la variable. Vous pouvez avoir besoin de guillemets simples si la valeur est une chaîne: WHERE colonne = '?'.
- Aperçu de la transformation pour voir le résultat, l'aperçu de Table Input est désactivé en raison de la dépendance.
Notes:
- Étape 1 et 2 ne peuvent pas être nécessaires, je ne sais pas si l'étape JS génère une ligne par lui-même. J'aime être explicite à ce sujet, nommant souvent l'étape Générer des lignes "Générer 1 ligne".
- Si vous avez un flux existant ou plusieurs champs à insérer, vous pouvez utiliser l'étape Sélectionner les valeurs pour placer les champs dans l'ordre dans lequel ils doivent être insérés dans le SQL.
déjà fait votre démarche mais son erreur sur la table entrée , voir ma section de réponse pour l'image (deuxième image) –
@AlexanderChandra: Dans votre deuxième image, je ne vois pas de guillemets autour de la? dans votre entrée de table. Vous obtenez probablement une erreur "colonne inconnue ...". Essayez des guillemets simples. – Cyrus