我正在迁移必须使用已存在的存储过程插入的数据.存储过程具有参数和插入行的id的返回值(来自select语句).在SSIS中的OLE DB命令中,我可以调用存储过程传递列值作为参数,我通常使用存储过程的输出参数来处理"id"输出; 但是当程序使用select来返回id值时,我不确定如何使用返回值来处理这个问题.这是我之前使用过的一个例子,但是我需要从select中返回的值:
exec dbo.uspInsertContactAddress @Address = ?, @ContactID = ?, @DeliveryMethodId = ?, @ID = ? output, @Version = ? output
bobwah.. 12
我发现我能做到这一点的方式实际上非常简单:
exec ? = dbo.StoredProc @param = ?, @param2 = ?
然后@RETURN_VALUE将出现在可用目标列上
我发现我能做到这一点的方式实际上非常简单:
exec ? = dbo.StoredProc @param = ?, @param2 = ?
然后@RETURN_VALUE将出现在可用目标列上
不要在SqlCommand属性中使用变量名,只使用问号以及输出参数的"OUT"或"OUTPUT"标签.
获取输出参数值的技巧是在OLE DB命令之前的管道中放置派生列转换以引入列(映射到SSIS变量)以捕获过程结果.
有关如何执行此操作的屏幕截图,请参阅OLEDB命令转换和标识列以获得良好的概述.另请参阅第一个链接中使用的"废纸篓目标"的" 废纸篓目标适配器 ".这是一个方便的工具,可用于调试这样的事情.