我有以下查询
ALTER PROCEDURE sp_myTest
@emp_ids nvarchar(max)
AS
BEGIN
SET NOCOUNT ON;
SELECT
Count(*)
FROM
emp_service t
INNER JOIN
t_emp e ON t.emp_id = e.emp_id
WHERE
(t.emp_id IN (Select * FROM dbo.Split(@emp_ids, ',')) OR @emp_ids = '' OR @emp_ids IS NULL)
AND t.status IN ('A', 'R', 'S')
GROUP BY
t.emp_id
END
在上述存储过程中,我有两个表:员工服务(
emp_service
)和员工表t_emp
。我的目的是找出员工服务的状态。假设'A'表示活动状态,'R'表示已删除,'S'表示暂停。在这个查询中,我想找到与emp_id相对应的服务数量。
例如:我的emp_id是'15000',我有三项服务,它们的状态分别为'A'、'S'、'A'。在这种情况下,预期结果应返回'3'(我只使用select语句运行它,并返回了正确的结果)。
Declare @emp_ids nvarchar(max)
Set @emp_id = '15000'
Select Count(*)
From emp_service t
INNER JOIN t_emp e
ON t.emp_id = e.emp_id
WHERE
(t.emp_id IN (Select * FROM dbo.Split(@emp_ids, ',')) OR @emp_ids = '' OR @emp_ids IS NULL)
and t.status in ('A', 'R', 'S')
GROUP BY t.emp_id
这个查询返回了正确的结果'3'。
但是,当我尝试执行存储过程时,它返回了'0'。我不确定为什么会出现不同的结果。希望能得到帮助。
exec
语句中的参数格式不正确。确保你使用一个带有逗号分隔值的NVARCHAR(MAX)
参数来调用该过程。 - diiN__________