Bonjour!UNION condizionale in stored procedure
Quindi, in una procedura memorizzata vorrei fare un unione condizionale decisa da un parametro. Come posso farlo?
Qui è il mio "non funziona" Procedura:
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[spp_GetAdressesList]
@OnlyLinked bit = 1,
@ObligedId int = -1
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
Quindi, se @ObligedId est = a -1 Vorrei non ha il sindacato.
Ho fatto questo con una query dinamica varchar, alla fine stavo eseguendo la query con un exec. Ma è apparentemente meno efficiente e puoi fare sql injection (è per l'applicazione asp.net) con query dinamiche. Ho deciso di modificare tutte le mie stored procedure
Non è possibile fare un sindacato in una clausola IF?
Grazie per tutte le risposte senza eccezioni ..
'' '' un valore di dati valido per 'ADRESSES.ID_ADRESS'? Se non lo è, puoi sempre fare l'UNION'. Inoltre, "Indirizzo" ha due "d" s :) – AakashM
"indirizzo" in francese .. ok per fare l'unione ma voglio capire come posso farlo se -1 è un ID valido – bAN