Bonjour!UNION có điều kiện trong thủ tục được lưu trữ
Vì vậy, trong quy trình được lưu trữ, tôi muốn thực hiện một công đoàn có điều kiện do một tham số quyết định. Tôi có thể làm như thế nào?
Dưới đây là tôi "không hoạt động" thủ tục:
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
Vì vậy, nếu @ObligedId est = a -1 Tôi muốn không có UNION.
Tôi đã thực hiện điều này với truy vấn varchar động, ở phần cuối tôi đã thực hiện truy vấn với một exec. Nhưng nó có vẻ kém hiệu quả và bạn có thể làm cho tiêm sql (Nó là dành cho ứng dụng asp.net) với các truy vấn động. Tôi quyết định thay đổi tất cả các thủ tục đã lưu của mình
Không thể thực hiện một liên minh trong mệnh đề IF?
Cảm ơn tất cả những câu trả lời mà không ngoại lệ ..
Là '-1' giá trị dữ liệu hợp lệ cho' ADRESSES.ID_ADRESS'? Nếu không, bạn chỉ có thể thực hiện 'UNION'. Ngoài ra, "Địa chỉ" có hai "d" s :) – AakashM
"adresse" bằng tiếng Pháp .. ok để làm công đoàn nhưng tôi muốn hiểu làm thế nào tôi có thể làm điều đó nếu -1 là một ID hợp lệ – bAN