2017-06-28 2 views
1

J'ai un travail avec deux transformation en elle.Comment passer paramètre dans l'entrée de table?

  1. La transformation obtient la liste des données qui passent à une autre transformation. Ici, il s'exécute pour chaque passe de la première transformation.

  2. Dans la deuxième transformation, je l'ai utilisé

    "Retourne une ligne de résultat" - "entrée de table">

Dans "Retourne une ligne de résultat" il y a le cinquième champ, mais en entrée de table i doivent utiliser seulement la 2e et la 3e position.

même si j'essaie de donner un seul paramètre "?" son erreur donnant

" 29/06/2017 15:11:02 - Données de table.0 - Valeur de réglage Erreur # 3 [chaîne] sur instruction préparée 29/06/2017 15:11:02 - Get Data from table.0 - Indice de paramètre hors plage (3> nombre de paramètres, soit 2) "

Ma requête est très simple select * from table where col1 =? et col2 =?

Comment puis-je y parvenir? Erreur? Est-ce que je fais quelque chose de mal?

+0

Quelle est votre requête sql? Il ressemble à un problème SQL à moi. "2 n'est pas entre les valeurs valides de 1 et 1" ce qui est juste – Nikhil

+0

Même après avoir passé les paramètres corrects il à travers un autre problème.J'ai mis à jour ma question. –

Répondre

3

Vous pouvez aussi donner des noms à vos paramètres, afin que votre requête devient

select * from table where col1="${param2}" and col2="${param3}".

Ne pas oublier de cocher la case « Remplacer variable de script », et d'adapter les citations à votre dialecte sql (ex: '${param1}' pour SQL Server).

Notez que les param2 et param3 doivent exister dans les paramètres/paramètres de la transformation, sans la décoration ${...} et avec des valeurs qui ne rompent pas le code SQL.

Les valeurs des paramètres peuvent être définies ou modifiées dans une transformation précédente avec une étape Set variables (les variables et les paramètres sont synonymes en première approximation) et une portée d'au moins Valid in the parent job.

Bien sûr, si vous insistez dans les paramètres sans nom à des fins de legs ou toute autre raison, vous êtes responsable de dire IPD que le premier doit être mis au rebut, (par exemple where (? is null or 0=0) and col1=? and col2=?.

2

Si vous avez 5 champs arrivant à l'entrée de la table, vous devez passer 5 paramètres à votre requête, et dans le bon ordre. De plus, chaque paramètre ne sera utilisé qu'une seule fois. Donc, si vous avez 5 champs et n'utilisez que 2 d'entre eux, le meilleur moyen est de placer une valeur de sélection entre Obtenir les lignes du résultat et Entrée de la table et ne laisser passer que les paramètres réels de la requête.