Невозможно создать хранимую процедуру с параметром вывода таблицы

У меня есть этот код:

IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[GetProfitDeals]') AND type in (N'P', N'PC')) DROP PROCEDURE [dbo].[GetProfitDealsVar2] GO IF EXISTS(SELECT 1 FROM sys.types WHERE name = 'TableOrderType' AND is_table_type = 1 AND SCHEMA_ID('dbo') = schema_id) DROP TYPE [dbo].[TableOrderType]; CREATE TYPE TableOrderType AS TABLE( Order_ID int NOT NULL, Order_AccNumber int NOT NULL, Order_OpenDate datetime NULL, Order_CloseDate datetime NULL, Order_Profit float NULL ); GO CREATE PROCEDURE [dbo].[GetProfitDeals](@OpenDate datetime = NULL, @CloseDate datetime = NULL, @MinProfit float = NULL, @out TableOrderType OUTPUT READONLY) AS INSERT INTO @out SELECT * FROM [Orders] WHEN [Orders].[OpenDate] >= @OpenDate GO 

Но я получаю сообщение об ошибке «Неправильный синтаксис о построении« READONLY ». Как я могу это исправить, потому что мне действительно нужен параметр таблицы OUTPUT.

Параметры таблицы только для чтения. Вы не можете выбрать их. Использование табличных параметров :

Табличнозначные параметры должны передаваться в качестве входных параметров READONLY для подпрограмм Transact-SQL. Вы не можете выполнять операции DML, такие как UPDATE, DELETE или INSERT, в параметре table-value в теле процедуры.

И табличные параметры :

Вы не можете возвращать данные в параметре table-value. Табличнозначные параметры вводятся только; ключевое слово OUTPUT не поддерживается.

Чтение массивов и списков в SQL Server для всестороннего обсуждения альтернатив.

Как утверждает Ремус, вы не можете сделать это точно, но вы можете добиться того, чего хотите достичь, используя вместо этого функцию, определяемую пользователем: tsql возвращает таблицу из функции или процедуры хранения

Что вернет ваши данные в таблицу, однако я считаю, что вам нужно будет определить таблицу в функции и не определять ее как тип

  • Недостаток узла главной таблицы, SQL Server 2012 SP1
  • SQL Server 2012: Вход в систему PC-NAME \ SQLEXPRESS работает, но не локально / (локально)
  • Перечислите все рабочие даты между двумя датами в SQL
  • Полнотекстовый поиск не работает, если включено стоп-слово, даже если стоп-лист пуст
  • Как получить значения за все месяцы в T-SQL
  • MERGE продолжает пытаться вставить нуль
  • Как запретить другим приложениям подключаться к SQL Server?
  • Получить размер вставленной строки в SQL Server
  • как вставить значение в таблицу типов данных изображения
  • Ошибка «Недопустимое имя столбца» при вызове вставки после создания таблицы
  • Последовательность SQL Server 2012
  • Давайте будем гением компьютера.