Как можно использовать поля типа таблицы? - PullRequest
0 голосов
/ 19 февраля 2019

С учетом следующего пользовательского типа таблицы 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".

1 Ответ

0 голосов
/ 19 февраля 2019

Вам необходимо добавить псевдоним в табличный параметр:

CREATE PROCEDURE FindPencilsForPencilCases
    @pencilCaseIds dbo.IntegerIdTableType READONLY
AS
BEGIN
    SELECT *
    FROM Pencils
    INNER JOIN @pencilCaseIds AS tvp 
        ON tvp.Id = Pencils.PencilCaseId
END
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...