首先我有一个这样的饿存储过程, @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, 这个真是坑了我好久.
好了, 就这样了.