Как вставить в пункт назначения oledb из команды oledb
Я пытаюсь вставить в место назначения ole db результат sp для каждой записи в источнике ole db,
sp возвращает набор записей
Я нашел это, как вызвать хранимую процедуру в SSIS
но я все еще не могу видеть столбцы выхода в выходных столбцах команды OleDb
вот мой зр:
create PROCEDURE [dbo].[GetData] (
@user varchar(50)
) AS
set nocount on
-- Publish metadata for ssis
if 1=0
begin
select '' x, '' y, '' z
end
declare @user_tmp table
(
x varchar(max),
y varchar(max),
z varchar(max)
)
insert into @user_tmp
select 'x1' x, 'y1' y, 'z1' z
select distinct * from @user_tmp
set nocount off
3 ответа
Я не пробовал табличные переменные, но я знаю, что SSIS не распознает поля, если вы используете временные таблицы, и табличные переменные могут иметь одинаковое ограничение. Однако он распознает поля, если вы используете CTE. Если вы можете перейти на использование CTE, ваш процесс может работать.
- Используйте источник OLE DB для получения выходных данных хранимой процедуры в потоке данных.
- Не используйте команду OLE DB в качестве источника.
Используйте место назначения OLE DB для места назначения вывода источника OLE DB (который получает данные результата SP).
Добавьте в ETL варианты дизайна или требования (производные столбцы, преобразование данных и т. Д.) Между источником и местом назначения.
Команда OLE DB используется для выполнения SQL для каждой проходящей строки, а не для создания потока данных, например, вам нужно выполнение типа строка за строкой.
Возможно ли получить результат оператора вставки? Попробуйте установить NOCOUNT ON.
http://msdn.microsoft.com/en-us/library/aa259204(SQL.80).aspx