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..