1

次のようなストアド プロシージャがあります。

ALTER PROCEDURE [dbo].[hr_SearchVacanciesAdmin]
    @SearchText NVARCHAR(50) = NULL,
    @CompanyName NVARCHAR(100) = NULL,
    @DutyStationID INT = NULL,
    @VacancyCategoryIDs VARCHAR(1000) = NULL,
    @Status INT,
    @Language INT = 1

BEGIN

SELECT * from table
where 
  deleted = 0
  and status = @status
  and catname  = &searchtext

..
..
..
END

if @status = 4 then delete = がチェックされないように、 where 条件に case ステートメントを追加したい。私は次のことを試みましたが、うまくいきませんでした

WHERE 
  1 = CASE 
        WHEN @Status = 4 
        THEN @status

        WHEN dbo.hr_Vacancies.Deleted = 0 
             --Search Criteria
             AND dbo.hr_Vacancies.Status = @Status 
        THEN @Status
      END
4

3 に答える 3

-1

SELECTクエリを開始するには、次の構成を使用できます。

Select * from table
WHERE
((1 = CASE WHEN @Status = 4 THEN 1 ELSE 0 END)
OR
dbo.hr_Vacancies.Deleted = 0)
AND
dbo.hr_Vacancies.Status = @Status
于 2013-04-04T14:40:40.220 に答える