Программы - это тип таблицы, определяемый пользователем. Ниже правильный скрипт.
DROP TYPE IF EXISTS Programs
GO — From SQL 2016
CREATE TYPE Programs
AS TABLE (Program INT)
GO
DECLARE @ProgramIDs Programs — You must define @ProgramIDs variable as “Programs” type
INSERT INTO @ProgramIDs
VALUES (12071), (66306)
EXEC gpCompRes
@ProgramId = @ProgramIDs,
@OrganisationId = 1122,
@UserIdList = 3326,
@ActionUserId = 2255
GO
Если вы будете использовать его в программе, я советую вам добавить PRIMARY KEY и NOT NULL CONSTRAINT в определение TABLE TYPE, чтобы избежать дублирования и значений NULL.
DROP TYPE IF EXISTS Programs
GO
CREATE TYPE Programs AS TABLE (Program INT NOT NULL PRIMARY KEY CLUSTERED)
GO
Для высокопроизводительных приложений вы также можете преобразовать его в ТИП ТАБЛИЦЫ В ПАМЯТИ, как показано ниже:
DROP TYPE IF EXISTS Programs
GO
CREATE TYPE Programs AS TABLE (Program INT NOT NULL PRIMARY KEY CLUSTERED)
WITH ( MEMORY_OPTIMIZED = ON ) -From SQL Server 2014
Документация:
ТИП ТАБЛИЦЫ
ТИП ТАБЛИЦЫ ОПТИМИЗИРОВАННОЙ ПАМЯТИ