SSIS,参数坑

首先我有一个这样的饿存储过程, @procGuid 这个是 存放 guId的字符串

当如传入  0 的时候, @procGuid 会赋值,并且返回.

declare @procGuid varchar(36)
exec [cdc].[cdc_ssis_getdata_xmbj_olap] -1,@procGuid output
print @procGuid;
go

然后 传入2的时候, 查询返回结果.

    declare @procGuid varchar(36)
    --set @procGuid='2B797933-28F5-4DEC-848F-F210BEA787DF'
    exec [cdc].[cdc_ssis_getdata_xmbj_olap] 2,@procGuid output 
    print @procGuid
    go

现在这些准备好了以后, 准备 SSIS  包,

任任务是这样的, 首先 执行 exec [cdc].[cdc_ssis_getdata_xmbj_olap] 0,@procGuid output 得到  procGui的的值, 然后当做参数,

执行 exec [cdc].[cdc_ssis_getdata_xmbj_olap] 2,@procGuid output 查询数据,最后修改状态为 1表示执行完毕

首先 Task任务开始是这样执行的 

 然后我要指定 这个  ? 所代表的参数. 

 变量自己先设定好, 这里要说明的是 参数的方向,  这里指定的 传出参数, 也就是存储过程的连对参数进行赋值后返回的,类似于 C# 里面的 out 参数.

然后我执行  数据流任务 . OLEDB 数据源, 执行 sql命令文本, 这里我要传入参数.

   

   这个地方有个坑,上面 参数的名称, 看到没有, 是 0, 如果这里再写0, 执行的时候会说上面 @procGuid 没有赋值, 我愣是没搞明白, 我到底哪里没赋值.

    经过仔细排查后,发现坑在这里 

这个地方的参数名称, 要写成 存储过程里面的参数名称才行, 而不是上面的 参数0, 这个真是坑了我好久.

 好了, 就这样了.

原文地址:https://www.cnblogs.com/mjxxsc/p/5614812.html