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

SSIS Discussion :

Problème requête SQL paramétrée dans l'OLE DB Source Editor


Sujet :

SSIS

  1. #1
    Membre averti
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Juin 2011
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence
    Secteur : Finance

    Informations forums :
    Inscription : Juin 2011
    Messages : 45
    Par défaut Problème requête SQL paramétrée dans l'OLE DB Source Editor
    Bonjour à tous,
    je rencontre un problème bien curieux, pour récupérer mes données, j'ai besoin d'utiliser une requête paramétrée:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT A.CodeID AS CodeID_GeographicalArea,
    		AL.Label AS GeographicalArea
     
    	FROM CO_GeographicalArea A
    	LEFT JOIN CO_LabelTranslation AL ON A.CodeID = AL.CodeID AND AL.LanguageID = ?
    Voici le message d'erreur:

    Parameters cannot be extracted from the SQL command. The provider might not help to parse parameter information from the command. In that case, use the "SQL command from variable" access mode, in which the entire SQL command is stored in a variable.
    Je ne vois pas d'où peut provenir l'erreur, la syntaxe SQL est bonne.
    Vous avez une idée?

    Merci

  2. #2
    Membre averti
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Juin 2011
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence
    Secteur : Finance

    Informations forums :
    Inscription : Juin 2011
    Messages : 45
    Par défaut
    Il me semble avoir trouvé une alternative qui serait d'utiliser une requête stockée dans une variable.
    Voici le lien où j'ai trouvé comment réaliser l'opération:
    http://www.rafael-salas.com/2007/11/...inside-of.html

    Mais voilà mon expression n'est apparemment pas valide:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    "SELECT A.CodeID AS CodeID_GeographicalArea,
    		AL.Label AS GeographicalArea
     
    	FROM CO_GeographicalArea A
    	LEFT JOIN CO_LabelTranslation AL ON A.CodeID = AL.CodeID AND AL.LanguageID = "+@[User::IdLangue]
    Le problème vient du fait que ma variable est du type integer, et que l'opérateur + s'utilise avec des variables de type String. Est ce qu'il est possible de caster ma variable dans l'expression, et si oui comment?

  3. #3
    Membre chevronné
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Juillet 2010
    Messages
    240
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant en Business Intelligence
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2010
    Messages : 240
    Par défaut
    Tu utilises quel provider ?

    Il existe certaines restrictions concernant les paramètres.

    Comme tu l'as trouvé tu peux passer par une variable et concaténer tes paramètres. Cela fonctionne très bient tant que tu n'as pas plus de 4000 caratères.

  4. #4
    Membre averti
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Juin 2011
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence
    Secteur : Finance

    Informations forums :
    Inscription : Juin 2011
    Messages : 45
    Par défaut
    Salut Nished,

    je viens de résoudre le problème, il venait bien du cast, la bonne syntaxe est celle-ci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    "SELECT A.CodeID AS CodeID_GeographicalArea,
    		AL.Label AS GeographicalArea		
    	FROM CO_GeographicalArea A
    	LEFT JOIN CO_LabelTranslation AL ON A.CodeID = AL.CodeID AND AL.LanguageID = "+(DT_STR, 4, 1252)@[IdLangueToSelect]
    Il faut bien penser à initialiser la valeur de la variable dans la propriété value de la variable:


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    "SELECT A.CodeID AS CodeID_GeographicalArea,
    		AL.Label AS GeographicalArea		
    	FROM CO_GeographicalArea A
    	LEFT JOIN CO_LabelTranslation AL ON A.CodeID = AL.CodeID AND AL.LanguageID = 0"
    J'ai trouvé l'information sur ce blog qui explique très bien le design pattern:

    http://sqlblog.com/blogs/andy_leonar...namic-sql.aspx

    Tout marche très bien. Est ce que quelqu'un peux m'expliquer pourquoi il est impossible dans l'OLE DB EDITOR de passer directement ma requête?

  5. #5
    Membre chevronné
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Juillet 2010
    Messages
    240
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant en Business Intelligence
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2010
    Messages : 240
    Par défaut
    Citation Envoyé par pierick Voir le message
    Tout marche très bien. Est ce que quelqu'un peux m'expliquer pourquoi il est impossible dans l'OLE DB EDITOR de passer directement ma requête?
    Restriction des providers.

    Par exemple le driver OLE DB de Microsoft pour Oracle ne gère pas les paramètres.

    Tu es obligé de passer par des expressions.

  6. #6
    Membre averti
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Juin 2011
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence
    Secteur : Finance

    Informations forums :
    Inscription : Juin 2011
    Messages : 45
    Par défaut
    Je ne sais pas si ça en est réellement la raison. Dans ce cas pourquoi cette requête marche très bien dans l'éditeur OLE DB:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    "SELECT A.CodeID AS CodeID_GeographicalArea,
    		AL.Label AS GeographicalArea		
    	FROM CO_GeographicalArea A,  CO_LabelTranslation AL 
    	where  A.CodeID = AL.CodeID AND AL.LanguageID = ?"
    Dans ce cas je peux passer un paramètre, l'éditeur ne génère aucune erreur, alors que ma requête avec la jointure gauche ne passe pas alors qu'elle bonne. Ça m'intrigue vraiment.

Discussions similaires

  1. [Débutant] Problème requête SQL paramétrée
    Par buzz2buzz dans le forum VB.NET
    Réponses: 3
    Dernier message: 16/07/2014, 13h12
  2. Problème de lenteur requête SQL exécutée dans une page ASP
    Par Philippe Robert dans le forum MS SQL Server
    Réponses: 6
    Dernier message: 20/01/2009, 17h38
  3. Problème "conceptuel" de requête SQL (pas dans leurs ecritures)
    Par Julie!!! dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 22/04/2008, 11h25
  4. Problême requête SQL dans access..Erreur 3079
    Par DavidGG dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 18/01/2008, 17h48
  5. Problème requête SQL dans page ASP
    Par rocs dans le forum ASP
    Réponses: 14
    Dernier message: 26/07/2005, 15h38

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