2013-07-05 214 views
0

我有一个SSIS包,它从数据库表中获取数据并将其输出到csv文件中。在这个过程中的某个时刻,有一个执行SQL任务来检索文件名(一个类型和一个序列号,然后用它来创建文件名,例如CAR,12会使C0000012.csv。我需要能够要做到这一点,以避免在包运行时表中没有汽车的情况下出现错误SSIS执行SQL任务输出变量

为此,我做了一个sql包,它将检查计数, 。然后要么返回“car”和是否有数据或“NUL”和0,如果心不是序列号我有被映射作为输出参数的两个变量:

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

当运行包我保持得到错误:

The type of the value being assigned to variable "User::DownloadFileType" differs from the current variable type.

我已经在线寻找帮助,似乎有一个问题,试图将VARCHAR(MAX)加载到SSIS字符串值中,我的数据库字符串的类型为VARCHAR2(PL SQL),但我设置了最大尺寸为3整个包装,仍然没有运气。

我认为这个问题可能是因为它是VARCHAR2类型,但我不确定如何使它与SSIS兼容。任何帮助你可以提供将不胜感激。

谢谢你,史蒂夫

回答

1

return 'CAR' and the sequence number if there is data or 'NUL' and 0 if there isnt

字符串类型的变量不能在SSIS被分配NULL值。改为分配一些空字符串值。

投的VARCHAR2类型的返回字符串值在SELECT语句为varchar(3)

eg. select cast('CAR' as varchar(3)) from dual

+0

我没有分配一个NULL值,我被分配“NUL”为标志的字符串。 .. –

+0

我认为这是您的文章中的错字,您提到的错误是由于上述提及的原因 –

+0

在您的select语句中将类型varchar2的返回字符串值转换为varchar(3),例如。选择cast('CAR'as varchar(3))from dual –

相关问题