Reputation: 11
I try to access multiple where condition as stored procedure:
--EXEC RPT_LIST_BAK @Status='P/C,F,AT,CP'
ALTER PROCEDURE [dbo].[RPT_LIST_BAK]
@STATUS NVARCHAR(50)=NULL
AS
BEGIN
set @STATUS = '''' + REPLACE(@STATUS, ',', ''',''') + ''''
SELECT
TotalFailed = COUNT(CASE WHEN DIV_REQ_COM_IND IN('F') THEN DIV_REQ_COM_IND END)
FROM
TWAD_DIV_MASTER A
WHERE A.DIV_REQ_DEL_STATUS_ID = 1
AND A.DIV_REQ_COM_IND IN (@STATUS)
GROUP BY A.DIV_REQ_MAT_ID
ORDER BY A.DIV_REQ_MAT_ID ASC
END
EXEC RPT_LIST_BAK @Status='P/C,F,AT,CP'
In select I get 'P/C','F','AT','CP' -- this s correct and also return value,
(AND A.DIV_REQ_COM_IND IN (@STATUS))
it shows null value?Upvotes: 0
Views: 45
Reputation: 16908
Can you please try with this below script? this should work.
ALTER PROCEDURE [dbo].[RPT_LIST_BAK] @STATUS NVARCHAR(50) = NULL
AS
BEGIN
DECLARE @QueryScript NVARCHAR(MAX);
SET @STATUS = '''' + REPLACE(@STATUS, ',', ''',''') + '''';
SET @QueryScript = '
SELECT TotalFailed = COUNT(CASE WHEN DIV_REQ_COM_IND IN(''F'') THEN DIV_REQ_COM_IND END)
FROM TWAD_DIV_MASTER A
WHERE A.DIV_REQ_DEL_STATUS_ID = 1
AND A.DIV_REQ_COM_IND IN (' + @STATUS + ')
GROUP BY A.DIV_REQ_MAT_ID
ORDER BY A.DIV_REQ_MAT_ID ASC'
EXEC (@QueryScript);
END;
Upvotes: 1