невозможно объявить переменную как тип TVP в Stored Proc

Я создал TVP и пытаюсь использовать его в хранимой процедуре для ввода данных в хранимую процедуру. проблема в том, что я не могу создать свой SP с ним. Это говорит

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

My SP is

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 [email protected]
            WHERE MIMO.Status=@okStatus AND
                MIMO.MoveInTime BETWEEN @startDate AND @endDate
            GROUP BY MIMO.UserID

SET NOCOUNT OFF

END
GO

может ли кто-нибудь сказать мне, что я делаю неправильно ... Я пробовал то, что знал, но, похоже, ничего не работает.

Заранее спасибо.


person Sumit    schedule 02.04.2011    source источник


Ответы (1)


Либо используйте псевдоним для списка пользователей, либо поместите его в квадратные скобки:

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

or

JOIN @usersList ON MIMO.UserID=[@usersList].UserID
person Lucero    schedule 02.04.2011
comment
Я хотел бы знать причину, по которой требуется создать псевдоним, это что-то из-за того, что я использую соединения, так как я использовал TVP в подзапросах без создания псевдонима. - person Sumit; 02.04.2011
comment
Эта проблема характерна не только для TVP, но и для любой табличной переменной. Как и в случае с обычными таблицами, если два имени столбца неоднозначны, их необходимо уточнить либо с помощью идентификатора таблицы, либо с помощью псевдонима. Теперь происходит то, что если вы не укажете псевдоним, имя должно быть помещено в [], чтобы синтаксический анализатор не распознал это как имя переменной, а как уточнение имени столбца. - person Lucero; 03.04.2011