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

Développement SQL Server Discussion :

UNION conditionnel procedure stockée


Sujet :

Développement SQL Server

  1. #1
    Membre régulier Avatar de Orphey
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    58
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2010
    Messages : 58
    Points : 83
    Points
    83
    Par défaut UNION conditionnel procedure stockée
    Bonjour!
    Voila dans une procédure stockée je voudrais réaliser ou pas une union en fonction d'un paramètre..
    Comment puis-je faire?

    voici ma procédure qui ne fonctionne pas:

    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
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
     
    SET ANSI_NULLS ON
    GO
    SET QUOTED_IDENTIFIER ON
    GO
     
     
    CREATE PROCEDURE [dbo].[spp_GetAdressesList]
     
    	@OnlyLinked   bit         = 1,    -- Uniquement les enregistrements qui sont liés a une entité, oui par défaut
    	@ObligedId    int         = -1  -- ID d'un enregistrement qui doit obligatoirement figurer dans la liste, quelles que soient les valeurs des autres paramètres
    AS 
    BEGIN
     
    	SELECT 
    	   [ID_ADRESS]
          ,[ID_ENT]
          ,[VOI_ADRESS]
          ,[NUM_ADRESS]
          ,[BTE_ADRESS]
          ,[CP_ADRESS]
          ,[VIL_ADRESS]
     
    	FROM [ADRESSES]
        WHERE  
    	(
     
    		(VIL_ADRESS != 'NC' AND VIL_ADRESS != '--')
    		AND
    		(@OnlyLinked = 0 OR ID_ENT is not null)
     
    	)
     
    	IF (@ObligedId != -1)
    	BEGIN
    		UNION
    			SELECT 
    			   [ID_ADRESS]
    			  ,[ID_ENT]
    			  ,[VOI_ADRESS]
    			  ,[NUM_ADRESS]
    			  ,[BTE_ADRESS]
    			  ,[CP_ADRESS]
    			  ,[VIL_ADRESS]
     
    			FROM [ADRESSES]
    			WHERE  
    			ID_ADRESS = @ObligedId
    	END
     
    END
    Voila en gros si @ObligedId est = a -1 je voudrais qu'il ne fasse pas l'union, j'avais fait ca en dynamique, ou je construisait la requete dans un varchar et je l'exécutait à la fin. Mais bon, c'est pas top car ca permet l'injection, je voulais changer ca..
    Il râle sur le union, ce n'est pas possible de faire un union dans un if?

    Merci pour vos réponses..

  2. #2
    Modérateur

    Profil pro
    dba
    Inscrit en
    Janvier 2010
    Messages
    5 643
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dba

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5 643
    Points : 13 092
    Points
    13 092
    Par défaut
    Bonjour,

    Rajoute le test sur ta variable dans la clause WHERE ta deuxieme requete :

    Code sql : 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
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
     
    CREATE PROCEDURE [dbo].[spp_GetAdressesList]
     
    	@OnlyLinked   bit         = 1,    -- Uniquement les enregistrements qui sont liés a une entité, oui par défaut
    	@ObligedId    int         = -1  -- ID d'un enregistrement qui doit obligatoirement figurer dans la liste, quelles que soient les valeurs des autres paramètres
    AS 
    BEGIN
     
    	SELECT 
    		[ID_ADRESS]
          		,[ID_ENT]
          		,[VOI_ADRESS]
          		,[NUM_ADRESS]
          		,[BTE_ADRESS]
          		,[CP_ADRESS]
          		,[VIL_ADRESS]
    	FROM 
    		[ADRESSES]
    	WHERE(
     		VIL_ADRESS != 'NC' 
    		AND VIL_ADRESS != '--'
    		AND (
    			@OnlyLinked = 0 
    			OR ID_ENT IS NOT NULL
    		)
    	)
    	UNION
    	SELECT 
    		[ID_ADRESS]
    		,[ID_ENT]
    		,[VOI_ADRESS]
    		,[NUM_ADRESS]
    		,[BTE_ADRESS]
    		,[CP_ADRESS]
    		,[VIL_ADRESS]	  
    	FROM 
    		[ADRESSES]
    	WHERE  
    		ID_ADRESS = @ObligedId
    		AND @ObligedId != -1
     
     
    END

  3. #3
    Membre régulier Avatar de Orphey
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    58
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2010
    Messages : 58
    Points : 83
    Points
    83
    Par défaut
    ok ct donc si simple... J'ai presque honte..
    Merci..

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

Discussions similaires

  1. Ecriture d'une procedure stockée XP
    Par WOLO Laurent dans le forum Langage SQL
    Réponses: 2
    Dernier message: 17/07/2003, 13h09
  2. Réponses: 1
    Dernier message: 04/06/2003, 11h48
  3. procedure stockée champ date
    Par tripper.dim dans le forum SQL
    Réponses: 5
    Dernier message: 25/04/2003, 09h47
  4. Appel a une procedure stockée en vba
    Par The_Nail dans le forum VBA Access
    Réponses: 36
    Dernier message: 01/04/2003, 16h44
  5. procedure stockée dans un dbbatch
    Par pram dans le forum XMLRAD
    Réponses: 4
    Dernier message: 07/02/2003, 16h35

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