Bonjour!
Итак, в хранимой процедуре я хотел бы выполнить условное объединение, определяемое параметром. Как я могу это сделать?
Вот моя процедура «не работает»:
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
Итак, если @ObligedId est = a -1, я бы хотел, чтобы у меня не было UNION.
Я сделал это с помощью динамический запрос varchar, в конце я выполнял запрос с помощью exec. Но это, по-видимому, менее эффективно, и вы можете выполнить sql-инъекцию (это для приложения asp.net) с помощью динамических запросов. Я решил изменить все свои хранимые процедуры
Невозможно выполнить объединение в предложении IF?
Спасибо за все ответы без исключений ..