代码之家  ›  专栏  ›  技术社区  ›  Rick Hodder

SSIS OLE使用DBCommand调用tsql函数

  •  1
  • Rick Hodder  · 技术社区  · 15 年前

    我正在将Oracle数据导入SQL Server。在我的OLEDB源代码运行一个查询来获取要处理的数据之后,我试图以某种方式对字段值调用一个TSQL函数。。。

    我有一个SSIS数据流,其中有一个名为DepartureDateGMT的datetime列和一个名为DepartureTimeZoneKey的整数列。

    我有一个TSQL函数dbo.udf\u转换自GMT(,)返回日期时间

    我正在尝试创建一个OLE DB命令,该命令填充一个名为DepartureDate的列,该列保存调用的值:

    dbo.udf\u转换自GMT(DepartureDateGMT,DepartureTimezoneKey)

    对于SSIS数据流中的每一行。

    我不是更新/插入现有表,我只是尝试将结果存储到数据流数据集的每一行的DepartureDate列中

    我试过很多东西,比如

    执行官?dbo.udf\u转换自GMT(?,?)

    选择dbo.udf\u转换自GMT(DepartureDateGMT,DepartureTimezoneKey)

    dbo.udf\u转换自GMT(?,?)

    设置@Result=dbo.udf\u转换自GMT(?,?)

    我找错树了吗?我尝试过使用DerivedColumn,但它不允许调用TSQL函数。

    1 回复  |  直到 15 年前
        1
  •  1
  •   bobs    15 年前

    数据流任务中的oledb命令被设计为对数据流中的每一行运行一次SQL语句。不管它是否适合您,如果要处理的行太多,您可能对性能不满意。您是否研究过SSIS表达式语言,以查看是否可以将功能(而不是函数调用)移到派生列组件中?

    EXEC dbo.usp_ConvertFromGMT ?, ?, ? OUTPUT
    

    我认为您可以将结果映射为输出参数(3rd?在命令中)添加到数据流列。