как вставить в пункт назначения oledb из команды oledb - PullRequest
0 голосов
/ 19 марта 2009

Я пытаюсь вставить в место назначения 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 ]

0 голосов
/ 19 сентября 2011

Я не пробовал табличные переменные, но я знаю, что SSIS не будет распознавать поля, если вы используете временные таблицы, и табличные переменные могут иметь одинаковое ограничение. Однако он распознает поля, если вы используете CTE. Если вы можете перейти на использование CTE, ваш процесс может работать.

0 голосов
/ 26 апреля 2012
  • Используйте Источник OLE DB для получения вывода хранимой процедуры в потоке данных.
  • Не используйте команду OLE DB в качестве источника.
  • Используйте Назначение OLE DB для назначения вывода вашего источника OLE DB (который получает данные результата SP).

  • Добавить в ETL варианты выбора или требования (производные столбцы, преобразование данных и т. Д.) Между источником и назначением.

Команда OLE DB используется для выполнения SQL для каждой проходящей строки, а не для создания потока данных, например, вам нужно выполнение типа строка за строкой.

0 голосов
/ 25 марта 2009

Возможно ли получить результат оператора вставки? Попробуйте установить NOCOUNT ON.

http://msdn.microsoft.com/en-us/library/aa259204(SQL.80).aspx

...