SQL に次の SP があります。
ALTER PROCEDURE [dbo].[search_employee_special]
(
@employeruid uniqueidentifier,
@groupuid uniqueidentifier,
@includedependants bit = 0
)
AS
DECLARE @emptyuid uniqueidentifier
SET @emptyuid = CAST(CAST(0 AS BINARY) AS UNIQUEIDENTIFIER)
SELECT
emp.id,
emp.name
FROM employee emp
WHERE emp.isactive = 1
AND employeruid = @employeruid
AND (@groupuid = @emptyuid OR emp.gropuid = @groupuid)
@groupuid が空の GUID の場合、これはフィルターでうまく機能します。それ以外の場合は、groupuid でフィルター処理します...
ここで、他のパラメーターを組み合わせる必要があるため、必要なものはもう少し複雑です。
ALTER PROCEDURE [dbo].[search_employee_special]
(
@employeruid uniqueidentifier,
@groupuid uniqueidentifier,
@includedependants bit = 0
)
AS
DECLARE @emptyuid uniqueidentifier
SET @emptyuid = CAST(CAST(0 AS BINARY) AS UNIQUEIDENTIFIER)
SELECT
emp.id,
emp.name
FROM employee emp
WHERE emp.isactive = 1
AND employeruid = @employeruid
--AND (@groupuid = @emptyuid OR emp.gropuid = @groupuid)
AND (
(@includedependants = 0 AND
(@groupuid = @emptyuid
OR emp.groupuid = @groupuid))
OR emp.specialgroupuid = @groupuid)
これは機能しません...必要なのは、@includedependants = 1の場合はemp.specialgroupuidをフィルタリングし、それ以外の場合はemp.groupuidをフィルタリングすることです。
それを解決する方法の手がかりはありますか?私はその何かが単純だと確信しています:)
事前に助けに感謝します。