StatusId
- строка, разделенная запятыми. Если StatusId
равно '0', то все строки должны быть извлечены. В противном случае мне нужно объединиться с временной таблицей #StatusIdVal
, и соответствующие записи должны быть только выбраны.
CREATE Procedure TestSchema.GetDetails
(
@StatusId Varchar(MAX)
)
As
Begin
SET NOCOUNT ON
IF OBJECT_ID('tempdb.dbo.#TempStatusVal') IS NOT NULL
BEGIN
DROP TABLE #TempStatusVal
END
Create Table #TempStatusVal (StatusId Int Primary Key)
Insert into #TempStatusVal (StatusId)
SELECT Distinct ITEMS FROM TestSchema.SPLIT(@StatusId, ',')
Select *
From TestSchema.tblDetails TD with (NoLock)
Where TD.StatusId In (Select Case When @StatusId = '0' Then TD.StatusId Else (Select StatusId From #TempStatusVal) End)
IF OBJECT_ID('tempdb.dbo.#TempStatusVal') IS NOT NULL
BEGIN
DROP TABLE #TempStatusVal
END
SET NOCOUNT OFF
End
GO
Я могу понять, что если у #TempStatusVal
более одной записи, возвращающей исключение
подзапрос возвращает более 1 значения, это не разрешено
Как мне этого добиться?