Невозможно создать хранимую процедуру с параметром вывода таблицы
У меня есть этот код:
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.
- Не удалось подключиться к SQL Server в Hydro GeoAnalyst
- «Сервисный брокер». Главный сервер «sa» не может получить доступ к базе данных в контексте текущей безопасности
- Разрешить удаленное подключение только для определенных пользователей
- Не удается подключить образец базы данных в SQL Server 2012
- Поиск SQL Query Date с использованием Между
- Настройка состояния NOCOUNT с локальной переменной
- Операторы * = и = * sql
- Получить файл .sql из базы данных SQL Server 2012
- Как просмотреть запрос, который использовался для создания таблицы?
- Почему я не могу подключиться к общему экземпляру SQL Server 2012 LocalDB?
- Как исправить ошибку Visual Studio «Эта версия сервера не поддерживается ...» для SQL Server 2012
- Сбой базы данных SQL Server 2012 Express
- Как изменить имя сервера SQL2012 на localhost?
Параметры таблицы только для чтения. Вы не можете выбрать их. Использование табличных параметров :
Табличнозначные параметры должны передаваться в качестве входных параметров READONLY для подпрограмм Transact-SQL. Вы не можете выполнять операции DML, такие как UPDATE, DELETE или INSERT, в параметре table-value в теле процедуры.
И табличные параметры :
Вы не можете возвращать данные в параметре table-value. Табличнозначные параметры вводятся только; ключевое слово OUTPUT не поддерживается.
Чтение массивов и списков в SQL Server для всестороннего обсуждения альтернатив.
Как утверждает Ремус, вы не можете сделать это точно, но вы можете добиться того, чего хотите достичь, используя вместо этого функцию, определяемую пользователем: tsql возвращает таблицу из функции или процедуры хранения
Что вернет ваши данные в таблицу, однако я считаю, что вам нужно будет определить таблицу в функции и не определять ее как тип