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

MS SQL Server Discussion :

Requete avec clause where dynamique


Sujet :

MS SQL Server

  1. #1
    Membre du Club
    Homme Profil pro
    Chef de projets
    Inscrit en
    Août 2002
    Messages
    79
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projets
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2002
    Messages : 79
    Points : 68
    Points
    68
    Par défaut Requete avec clause where dynamique
    Bonjour,

    Dans le cas d'une réplication, j'aurais besoin de filtrer les lignes avec des paramètres dynamiques. Pour cela, j'ai fait une fonction scalaire qui me retourne la chaîne de caractères contenant le détail de la clause where.
    Par exemple, ma fonction getWhereClause(param1,param2) retourne : societe='A' and site='S1'.

    Je voudrais filtrer dynamiquement et donc faire une requête du type
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select * from maTable where getWhereClause(param1,param2)
    qui exécuterait la requête
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select * from maTable where societe='A' and site='S1'
    Actuellement, j'ai le message d'erreur :
    Expression de type non booléen spécifiée dans un contexte où une condition est attendue, près de ')'.
    Je fais donc appel à vos lumières. Si cela n'est pas possible, je ferai autrement.

    Merci d'avance.

  2. #2
    Modérateur

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2005
    Messages
    5 826
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2005
    Messages : 5 826
    Points : 12 371
    Points
    12 371
    Par défaut
    Bonjour,

    C'est tout à fait possible avec sp_executesql.

    Pour cela :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    DECLARE @sql nvarchar(256)
     
    SELECT	@sql = 'SELECT mesColonnes FROM dbo.maTable WHERE ' + dbo.getWhereClause(@param1, @param2)
    EXEC	sp_executeSQL @sql
    @++

  3. #3
    Membre du Club
    Homme Profil pro
    Chef de projets
    Inscrit en
    Août 2002
    Messages
    79
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projets
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2002
    Messages : 79
    Points : 68
    Points
    68
    Par défaut
    Merci pour la réponse.
    Ca fonctionne en exécutant dans une nouvelle requête.
    Maintenant, je complique les choses, parce qu'il faudrait que je puisse mettre ce filtre dans la boîte de dialogue "Filtrer les lignes" d'une réplication :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT <published_columns> FROM [dbo].[BPCUSTOMER] WHERE
    La requête initialisée est celle ci-dessus et je ne peux qu'ajouter des conditions après le WHERE.

    Des idées pour faire la même chose dans ce contexte ?

  4. #4
    Modérateur

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2005
    Messages
    5 826
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2005
    Messages : 5 826
    Points : 12 371
    Points
    12 371
    Par défaut
    Malheureusement je n'ai pas encore utilisé la réplication, donc je ne peux pas vous aider ... mais les autres participants, oui !

    @++

Discussions similaires

  1. requete SQL clause WHERE avec variable
    Par gabule dans le forum JDBC
    Réponses: 6
    Dernier message: 09/01/2019, 11h04
  2. [Toutes versions] Requete Select avec Clause WHERE par ODBC
    Par kernel57 dans le forum Access
    Réponses: 2
    Dernier message: 16/07/2014, 17h07
  3. [HQL] probléme requete HQL avec clause where in
    Par titawine dans le forum Hibernate
    Réponses: 3
    Dernier message: 16/05/2012, 10h02
  4. Pb de requete SQL avec clauses WHERE dans une procédure stockée
    Par CocoLeNain dans le forum SQL Procédural
    Réponses: 2
    Dernier message: 11/06/2010, 23h48
  5. Petit souci avec clause where
    Par ybruant dans le forum SQL
    Réponses: 1
    Dernier message: 21/07/2005, 22h10

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