ストアドプロシージャ内の場合:私は、しかし、私はそれが@DepartmentIdで結果を表示したい、@ DepartmentIdの= 24が、その後、私は唯一の部門24の結果を得る渡す場合、この手順で今もし私が手続き保存されている
ALTER PROCEDURE [dbo].[proc_GetApplicationByCostCentreId]
(
@CostCentreId TINYINT,
@DepartmentId INT = NULL,
@IsActive BIT = NULL
)
AS
BEGIN
SELECT
A.Id, A.Name, A.URL,
A.CostCentreId, C.CostCentre,
A.DepartmentId, D.DepartmentName,
A.ApplicationOwnerTypeId, AOT.Type,
A.SupportContact,
A.IsActive, A.AddedOn, A.AddedBy, A.ModifiedOn, A.ModifiedBy
FROM
dbo.Applications A
INNER JOIN dbo.Central_CostCentre_Main C ON A.CostCentreId = C.CostCentreId
LEFT OUTER JOIN dbo.Central_Department_Main D ON A.DepartmentId = D.DepartmentID
INNER JOIN dbo.ApplicationOwnerType AOT ON A.ApplicationOwnerTypeId = AOT.Id
WHERE
A.CostCentreId = @CostCentreId
AND CASE WHEN @DepartmentId IS NULL THEN 1 ELSE CASE WHEN A.DepartmentId = @DepartmentId THEN 1 ELSE 0 END END = 1
AND CASE WHEN @IsActive IS NULL THEN 1 ELSE CASE WHEN A.IsActive = @IsActive THEN 1 ELSE 0 END END = 1
ORDER BY [Name]
END
= 24、departmentsId = null
これを行うにはどのように手順を変更する必要がありますか?
ありがとうございます、これは部分的に動作します。 '@DepartmentId'がnullで、 '@CostCentreId'のみが指定されている場合は、ゼロの行が得られます。要するに、@DepartmentIdが提供されている場合にのみ動作します。私はどちらかの方法をしたい.. – user1181942
私の編集された答えを参照してください。それはヌルパラメータを処理する必要があります。 – tobias86
ありがとう...これは完璧です.. – user1181942