如何从oledb命令插入oledb目标

时间:2009-03-19 17:28:39

标签: stored-procedures ssis oledbcommand

我正在尝试在ole db目标中为ole db源中的每条记录插入sp的结果,

sp返回记录集

我找到了这个how to call a stored procedure in SSIS

但我仍然看不到OleDb命令输出列中的输出列

这是我的sp:

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 :(得分:0)

是否可能获得insert语句的结果?尝试SET NOCOUNT ON。

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

答案 1 :(得分:0)

我没有尝试过表变量,但我知道如果使用临时表,SSIS将无法识别字段,而表变量可能具有相同的限制。但是,如果您使用CTE,它将识别字段。如果你可以转换为使用CTE,你的proc可能会起作用。

答案 2 :(得分:0)

  • 使用 OLE DB源 来获取数据流中存储过程的输出。
  • 请勿使用 OLE DB命令 作为来源。
  • 使用 OLE DB目标 作为OLE DB源输出的目标(获取SP结果数据)。

  • 在源和目的地之间添加ETL设计选择或要求(派生列,数据转换等)。

OLE DB命令 用于为每个传递行执行SQL,而不是创建数据流,例如,您需要逐行类型执行。