С учетом следующего пользовательского типа таблицы SQL:
CREATE TYPE IntegerIdTableType AS TABLE
(
Id INT IDENTITY NOT NULL,
PRIMARY KEY(Id)
);
Как использовать поле Id
, когда тип используется в качестве параметра в хранимой процедуре, такой как:
CREATE PROCEDURE FindPencilsForPencilCases
@pencilCaseIds dbo.IntegerIdTableType READONLY
AS
BEGIN
SELECT *
FROM Pencils
INNER JOIN @pencilCaseIds ON @pencilCaseIds.Id = Pencils.PencilCaseId
END
Я могу запустить приведенное выше, если бы просто запустил SELECT * FROM @pencilCaseIds
, но если я ссылаюсь на поле Id
, я получаю следующее исключение:
Must declare the scalar variable "@pencilCaseIds".