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 :

[SQL2K] Faire un requête conditionnelle pour un CURSOR


Sujet :

MS SQL Server

  1. #1
    Membre extrêmement actif
    Avatar de zooffy
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Août 2004
    Messages
    3 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Bâtiment

    Informations forums :
    Inscription : Août 2004
    Messages : 3 895
    Points : 1 434
    Points
    1 434
    Par défaut [SQL2K] Faire un requête conditionnelle pour un CURSOR
    Bonjour

    J'ai besoins de nourrir un CURSOR selon des conditions. En fonction de apramettre envoyé il prendra une requête ou une autre.
    Est ce que je peux mettre un CASE ou un IF à la palce de MaRequete dans le morceau de code suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    DECLARE liste CURSOR
       FOR MaRequete 
    OPEN liste
    FETCH NEXT FROM liste
    Parce que j'ai essayé de préparer ma requête dans une Variable mais ça marche pas comme ça.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    DECLARE @SQL VARCHAR(1000)
    SET @SQL = MaRequête
    DECLARE liste CURSOR
       FOR EXEC (@SQL)
    OPEN liste
    FETCH NEXT FROM liste
    Pouvez vous m'aider ?

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    356
    Détails du profil
    Informations personnelles :
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Mai 2007
    Messages : 356
    Points : 406
    Points
    406
    Par défaut
    Utilise une requête dynamique pour déclarer ton CURSOR. De cette manière tu peux préparer ta requête en amont et l'utiliser dans ton curseur.

    ATTENTION : Dans ce mode de fonctionnement tes requêtes doivent avoir la même signature de paramètres. C'est-à-dire même nombre de paramètres et même type.

    Exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
     
    DECLARE @maRequete VARCHAR(1000)
    DECLARE @curseur VARCHAR(8000)
    IF clause1
       SET @maRequete= 'SELECT Ch1 FROM maTable WHERE Ch1>0'
    ELSE
       SET @maRequete= 'SELECT Ch1 FROM maTable WHERE Ch1<0' 
     
    SET @curseur = 'DECLARE monCurseur CURSOR FOR '+@maRequete
    EXECUTE(@curseur)
    IF @@ERROR <> 0
        RETURN -1
    OPEN monCurseur
    FETCH NXT FROM monCurseur INTO @champ
    WHILE @@FETCH_STATUS=0
    BEGIN
       ..........................
       FETCH NXT FROM monCurseur INTO @champ
    END
    CLOSE monCurseur
    DEALLOCATE monCurseur

  3. #3
    Membre extrêmement actif
    Avatar de zooffy
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Août 2004
    Messages
    3 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Bâtiment

    Informations forums :
    Inscription : Août 2004
    Messages : 3 895
    Points : 1 434
    Points
    1 434
    Par défaut
    Merci beaucoup, ça me sort une épine du pied.

    J'ai essayé et ça marche bien.
    Ma différence de requête ne repose sur les clauses Where, donc pas de souci pour le nombre de champ retourné. Je ferais attention si mes champs n'ont pas le même type.

    Kenavo

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

Discussions similaires

  1. requête conditionnelle pour calcul
    Par ckisscool dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 03/10/2012, 15h19
  2. Faire une requête conditionnelle avec variable
    Par danje dans le forum Langage SQL
    Réponses: 1
    Dernier message: 16/10/2008, 16h07
  3. Réponses: 3
    Dernier message: 13/05/2006, 12h06
  4. problème pour faire une requête
    Par mitchbuck dans le forum Langage SQL
    Réponses: 2
    Dernier message: 08/11/2005, 23h48
  5. Réponses: 9
    Dernier message: 24/05/2003, 11h25

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