如何从 oledb 命令插入 oledb 目标

发布于 2024-07-15 03:47:41 字数 700 浏览 8 评论 0原文

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

sp 返回一个记录集,

我发现了这个 如何在 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 

I'm trying to insert in a ole db destination the result of a sp for each record in an ole db source,

the sp returns a record set

I have found this how to call a stored procedure in SSIS

but i still can't see the outpout columns in OleDb Command Output Columns

here is my 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 

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

樱娆 2024-07-22 03:47:41

是否可以得到插入语句的结果? 尝试设置 NOCOUNT ON。

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

Is it maybe getting the result of the insert statement? Try SET NOCOUNT ON.

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

叹梦 2024-07-22 03:47:41

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

I've not tried table variables, but I know that SSIS will not recognize fields if you use temp tables and table variables may have the same limitation. It will recognize the fields if you use a CTE however. If you can convert to using a CTE, your proc might work.

满天都是小星星 2024-07-22 03:47:41
  • 请使用OLE DB 源来获取数据流中存储过程的输出。
  • 不要使用OLE DB 命令作为源。
  • 使用OLE DB 目标作为 OLE DB 源(获取 SP 结果数据)的输出目标。

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

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

  • Do use a OLE DB Source for taking the output of a stored procedure in your data flow.
  • Do not use a OLE DB Command as a source.
  • Do use a OLE DB Destination for the destination of the output of your OLE DB Source (Which gets the SP result data).

  • Add in ETL design choices or requirements (Derived columns, Data Conversion, etc) between source and destination.

OLE DB Command is used to perform a SQL for each passing row, not to create a flow of data, for example you need a row-by-row type execution.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文