0

我有一个 SSIS 包,它从数据库表中获取数据并将其输出到 csv 文件中。在此过程中,有一个执行 SQL 任务来检索文件名(然后用于生成文件名的类型和序列号,例如 CAR,12 将生成 C0000012.csv。我需要能够这样做的方式是在运行包时表中没有汽车的情况下不会引发错误。

为此,我制作了一个 sql 包来检查计数,如果有数据则返回“CAR”和序列号,如果没有则返回“NUL”和 0。我有两个变量映射为输出参数:

      NAME                   | Direction| Type   | Name | Size
      User::DownloadFileType | Output   | String | TYPE | 3
      User::DownloadFileNum  | Output   | int32  | SEQN | 8

当我运行包时,我不断收到错误:

分配给变量“User::DownloadFileType”的值的类型与当前变量类型不同。

我在网上寻求帮助,尝试将 VARCHAR(MAX) 加载到 SSIS 字符串值似乎存在问题,我的数据库字符串属于 VARCHAR2 (PL SQL) 类型,但我已将最大大小设置为 3整个包裹,仍然没有运气。

我认为问题可能在于它是 VARCHAR2 类型,但我不确定如何使它与 SSIS 兼容。您能提供的任何帮助将不胜感激。

谢谢,史蒂夫

4

1 回答 1

1

如果有数据,则返回 'CAR' 和序列号;如果没有,则返回 'NUL' 和 0

字符串类型的变量不能在 SSIS 中分配 NULL 值。而是分配一些空字符串值。

将 select 语句中类型 varchar2 的返回字符串值强制转换为 varchar(3)

例如。从 dual 中选择 cast('CAR' as varchar(3))

于 2013-07-05T14:20:25.040 回答