1

我正在将 Oracle 数据导入 SQL Server。在运行查询以获取要处理的数据的 OLE DB 源之后,我试图以某种方式在字段值上调用 TSQL 函数......

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

我有一个名为 dbo.udf_ConvertFromGMT(,) 的 TSQL 函数,它返回一个日期时间

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

dbo.udf_ConvertFromGMT(DepartureDateGMT,DepartureTimezoneKey)

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

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

我尝试了很多东西,比如

执行?dbo.udf_ConvertFromGMT(?,?)

SELECT dbo.udf_ConvertFromGMT(DepartureDateGMT,DepartureTimezoneKey)

dbo.udf_ConvertFromGMT(?,?)

声明@Result DATETIME SET @Result = dbo.udf_ConvertFromGMT(?,?)

但我收到:语法错误、权限违规或其他非特定错误

我在吠叫错误的树吗?我曾尝试使用 DerivedColumn,但它不允许调用 TSQL 函数。

谢谢!

4

1 回答 1

1

数据流任务中的 OLE DB 命令旨在为数据流中的每一行运行一次 SQL 语句。无论它是否适合您,如果有很多行要处理,您可能会对性能不满意。您是否查看过 SSIS 表达式语言以查看是否可以将功能而不是函数调用移动到派生列组件中?

如果必须使用 OLE DB 命令,可以尝试将 SQL 函数更改为 SQL 存储过程。在 OLE DB 命令中,您可以调用这样的过程

EXEC dbo.usp_ConvertFromGMT ?, ?, ? OUTPUT

我认为您可以将结果作为输出参数(命令中的第三个?)映射到数据流列。

于 2010-08-19T23:10:07.183 回答