2

我已经创建了一个 TVP,我正在尝试在存储过程中使用它来输入到存储过程中。问题是我无法用它创建我的 SP。它说

Msg 137, Level 16, State 1, Procedure uspGetUsersPresentCount, Line 14
Must declare the scalar variable "@usersList".

我的SP是

IF EXISTS (SELECT * FROM sysobjects WHERE name = 'uspGetUsersPresentCount')
    BEGIN
        DROP  Procedure  [AMProcedures].[uspGetUsersPresentCount]
    END

GO


SET ANSI_NULLS ON
GO 

SET QUOTED_IDENTIFIER ON
GO

CREATE PROC [AMProcedures].[uspGetUsersPresentCount]
(
    @usersList AS [AMProcedures].[udfUserListTVP] READONLY,
    @startDate DATETIME,
    @endDate DATETIME
)
AS
BEGIN
DECLARE @okStatus TINYINT = 4
SET NOCOUNT ON

    SELECT MIMO.UserID, COUNT(MIMO.MoveInTime) FROM AMTables.tblUserMoveInMoveOutDetails MIMO
        JOIN @usersList ON MIMO.UserID=@usersList.UserID
            WHERE MIMO.Status=@okStatus AND
                MIMO.MoveInTime BETWEEN @startDate AND @endDate
            GROUP BY MIMO.UserID

SET NOCOUNT OFF

END
GO

谁能告诉我我做错了什么...我已经尝试了我所知道的,但似乎没有任何效果。

提前致谢。

4

1 回答 1

3

为用户列表使用别名,或将其放在方括号中:

JOIN @usersList UL ON MIMO.UserID=UL.UserID

或者

JOIN @usersList ON MIMO.UserID=[@usersList].UserID
于 2011-04-02T16:50:38.940 回答