Начиная с sql server 2008, вы можете использовать table valued parameter s для передачи структурированных данных таблицы в один вызов хранимой процедуры.
Однако не каждый клиент поддерживает это. Это легко использовать с .Net, но я сомневаюсь, что это возможно с VBScript, например.
Для того, чтобы использовать таблицу оцененный параметр, который вы должны сначала создать пользователя определенный тип таблицы:
CREATE TYPE UDT_Portfolio As Table
(
Portfolio_Id int,
Portfolio_Name varchar(10),
.....
)
в вашем случае, так как вы хотите передать 2 таблицы, вам нужно 2-х типов:
CREATE TYPE UDT_Trades As Table
(
Trade_Id int,
Trade_Portfolio_Id int,
Trade_Name varchar(10),
....
)
Теперь, чтобы использовать их в хранимой процедуре очень легко:
CREATE PROCEDURE stp_InsertPortfoliosAndTrades
(
@Portfolio UDT_Portfolio readonly, -- Note: Readonly is a must
@Trade UDT_Trades readonly
)
AS
-- stored procedure logic here
Примечание # 1:: Табличные параметры отображаются только в режиме чтения. что вы не можете использовать для них обновление, вставку или удаление. Однако вы можете объявить таблицу с оценкой переменной внутри хранимой процедуры и использовать ее, обновить и удалить.
Примечание # 2: Если ваш портфель идентификатор является столбцом идентификаторов, то при вставке данных в таблицу портфеля вам нужно будет использовать output
положение, чтобы получить новые значения идентификаторов.
Пожалуйста, добавьте данные: Таблицы, данные, ожидаемые результаты и то, что вы сделали до сих пор –
Таблица портфеля имеет идентификаторы столбцов, имя портфолио, CreatedBy и CreatedOn, а таблица Trades имеет столбцы PortfolioID (ссылка из таблицы Portfolio ID), тикер, количество акций, действие. Данные представляют собой P1, Vijay, 21-Jun-2015 –
Таблица портфеля имеет идентификаторы столбцов, имя портфолио, createdBy и CreatedOn, а таблица Trades имеет столбцы PortfolioID (ссылка из идентификатора таблицы портфолио), тикер, количество акций, Действие. Портфолио 1: P1, Vijay, 21-Jun-2015 Торги для записей 1: 1, MSFT, 50, Купить \t; 1, IBM, 75, Sell. Портфолио Запись 2: P2, Suresh, 21-Jun-2015 Торги для записей 2: 2, YAHOO, 30, Update; 2, Goog, 40, Купить. В настоящее время я передаю две таблицы данных в хранимую процедуру для портфеля и одну для сделок и вызывая хранимую процедуру для каждого портфеля. –