비트 인수를 사용하여 다중 표준 저장 프로 시저 만들기

dapper sql-server stored-procedures

문제

CREATE PROCEDURE [GetSubscriptions]
@id uniqueidentifier,
@isActive bit
AS
BEGIN
SELECT 
*
FROM SUBSCRIPTION
WHERE id=@id and IsActive= @isActive 
END
GO

이 방법으로 사용하고 싶습니다.

  1. @isActive = 1이면 활성 구독 행을 반환합니다. - 작품들
  2. @isActive = 0 일 때 비활성 구독 행을 반환합니다. - 작품들
  3. IsActive Fiag가 아닌 다른 모든 구독 행을 반환합니다.

서브 스크립 션 테이블에는 0과 1 인 IsActive에 대한 두 개의 값만 있습니다.이 세 가지 조건 모두에서 가장 좋은 짧은 방법은 무엇입니까? 감사합니다.

인기 답변

@isActive 는 세 가지 상태, 즉 0, 1 또는 NULL을 가질 수 있습니다.
where 절에 NULL을 위해 무언가를 추가하십시오.

CREATE PROCEDURE [GetSubscriptions]
@id uniqueidentifier,
@isActive bit
AS
BEGIN
SELECT 
*
FROM SUBSCRIPTION
WHERE id=@id and (IsActive= @isActive or @isActive is NULL)
END
GO

or 두면은 동시에 true 일 수 없습니다. = 사용하여 NULL 을 비교하는 것은 항상 false이므로. @isActive 가 NULL이면 SubscriptionisActive 열 값에 관계없이 or 이 True입니다.



아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow
아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow