[转]SSIS OLE DB Source中执行带参数的存储过程
本文转自:http://www.cnblogs.com/michaelxu/archive/2009/10/21/1587450.html
问题描述:执行一个存储过程得到一个多条记录的结果集,然后循环这个结果集的每一条记录,根据这条记录的某几个字段执行一个带参数的存储过程,再将返回的结果集插入到一张表中。
Execute SQL Task “Get master records”中通过执行一个存储过程得到一个主结果集,Foreach Loop Container循环每条主记录,Data Flow Task对每条记录进行处理。
1、 先定义变量,如下表
v_BatchList定义为Object用来存储返回的主结果集。v_ID, v_OptionBinary, v_OptionField以及v_OptionTable是主结果集中的部分字段,用于Data Flow Task中执行存储过程时的输入参数。
2、 双击Get master records Task,打开配置窗口,在General页一定要将ResultSet设置为Full result set,即返回整个结果集,如下图。
切换到Parameter Mapping页,将主结果集中返回的字段按需要map到相应的定义好的变量上。我们已经定义了四个变量(v_ID, v_OptionBinary, v_OptionField以及v_OptionTable)用于参数输入,记得Direction设为Output。重要的一点Parameter Name一定要是数字,并以0开始与主结果集中的字段相对应。如我的主结果集返回如下:
那么Parameter Name的对应关系为:
v_ID: 3 //因为字段ID在结果集中3的位置
v_OptionTable: 0 //因为字段optionTable在结果集中0的位置
v_OptionField: 1 //因为字段optionField在结果集中1的位置
v_OptionBinary: 8 //因为字段optionBinary在结果集中8的位置
这个关系一定要对应好,不然得不到数据。
再切换到Result Set页,增加一个Result,Result Name一定又要设置成0,Variable Name为我们之前定义好的v_BatchList。
3、 双击Foreach Loop Container,打开设置窗口,切换到Collection页,将Enumerator设置为Foreach ADO Enumerator以循环结果集。ADO object source variable选择我们之前定义好的v_BatchList。选择Rows in the first table,如下图。
再切换到Variable Mappings页,配置变量的对应关系,如下图。其中Index跟前面的配置要对应。
4、 双击Data Flow Task,切换到Data Flow页面,这里只有两个控件,一个OLE DB Source和一个OLE DB Destination,分别用来进行数据的取出和插入,如图。
Get option records是根据前面设置的四个参数执行一个存储过程,来得到一个子记录集。
5、 双击Get option records Task,设置好Connection Manager,注意Data access mode选择SQL command用以执行存储过程,记得存储过程要在开头加上下面两句:
SET FMTONLY OFF;
SET NOCOUNT ON;。
执行存储过程语句:
EXEC [dbo].[ConvertOptionBits2Collection] ?, ?, ?,?
?代表输入的参数,这个存储过程需要四个参数。点击Parameter,打开参数设置,增加四个输入参数,注意Parameters的名字一定要与存储过程中的定义相同,Variables选择我们已经定义好的变量,这些变量道这里已经有值了,需要传入到存储过程中。另外要注意的是参数添加的顺序也要与存储过程中的定义相同,不然对应不上。或者可以在执行存储过程的语句把参数名加上。
设置完成后,点击OK完成。
6、 双击OLE DB Destination,对其进行设置,选择好Connection Manager和要插入的表,主要是Columns的对应关系,设置好之后,就可以导数据了。
[转]SSIS OLE DB Source中执行带参数的存储过程的更多相关文章
- [转]SSIS中OLE DB Source中如何执行Store Procedure 以得到源数据
本文转自:http://www.cnblogs.com/michaelxu/archive/2009/10/16/1584284.html 有很多人喜欢在OLE DB Source中执行Store P ...
- [转]Mapping Stored Procedure Parameters in SSIS OLE DB Source Editor
本文转自:http://geekswithblogs.net/stun/archive/2009/03/05/mapping-stored-procedure-parameters-in-ssis-o ...
- 在Java中调用带参数的存储过程
JDBC调用存储过程: CallableStatement 在Java里面调用存储过程,写法那是相当的固定: Class.forName(.... Connection conn = DriverMa ...
- Sql Server 带参数的存储过程执行方法
Sql Server 带参数的存储过程执行方法 Visual C# 动态操作 SQL Server 数据库实例教程(4):带参数的存储过程执行方法 上一篇文章介绍了带参数的SQL语句执行方法和不带参数 ...
- ThreadStart中如何带参数
1.ThreadStart 线程执行带参数的方法,new Thread(new ThreadStart(delegate { ThreadTask(firstPage, lastPage); })); ...
- C# ThreadStart中如何带参数
1.ThreadStart 线程执行带参数的方法,new Thread(new ThreadStart(delegate { ThreadTask(firstPage, lastPage); })); ...
- c#调用Mysql带参数的存储过程
1.首先创建一个带参数的存储过程 ①存储过程名称=proc_bookinfo ②存储过程2个参数 一个in 一个out in参数名称=ispay out参数名称=unPaycount ③ 这个存储过 ...
- oracle存储过程(带参数的存储过程)
带参数的存储过程 举例:为指定的员工涨100元的工资,打印涨前和涨后的工资 如果带参,需要指定是输入参数还是输出参数 create or replace procedure raisesalary(e ...
- 如何在c#代码中执行带GO语句的SQL文件
需要在C#代码中执行一个SQL文件的内容.遇到了两个问题: 1. 因为SQL文件中有"GO"语句,执行时报错"Incorrect syntax near 'GO'.& ...
随机推荐
- Python 微信公众号发送消息
1. 公众号测试地址 https://mp.weixin.qq.com/debug/cgi-bin/sandboxinfo?action=showinfo&t=sandbox/index 2. ...
- 编写简单的spring mvc程序,在tomcat上部署
编写简单的spring mvc程序,在tomcat上部署 1 用java 配置spring mvc ,可以省去web.xmlpackage hello;import org.springframewo ...
- php获取不到url问号之后的参数
url规则已定义: RewriteRule ^/member/editprivilege/([0-9]+) /access.php?_u=mobile/editprivilege&aid=$1 ...
- 将cmake文件转化为vs方便代码阅读与分析
下面通过“chengxuyuancc”同学的图来说明.通过cmake将winafl cmake编译方式转化为vs2015,方便源码阅读与分析. 1.到官网下载cmake软件.启动图形版 2.选择源码目 ...
- 洛谷P3975 跳房子 [DP,单调队列优化,二分答案]
题目传送门 跳房子 题目描述 跳房子,也叫跳飞机,是一种世界性的儿童游戏,也是中国民间传统的体育游戏之一. 跳房子的游戏规则如下: 在地面上确定一个起点,然后在起点右侧画 n 个格子,这些格子都在同一 ...
- 洛谷P1491 集合位置 [最短路,SPFA]
题目传送门 题目描述 每次有大的活动,大家都要在一起“聚一聚”,不管是去好乐迪,还是避风塘,或者汤姆熊,大家都要玩的痛快.还记得心语和花儿在跳舞机上的激情与释放,还记得草草的投篮技艺是如此的高超,还记 ...
- 倍增LCA学习笔记
前言 "倍增",作为一种二进制拆分思想,广泛用于各中算法,如\(ST\)表,求解\(LCA\)等等...今天,我们仅讨论用该思想来求解树上两个节点的\(LCA\)(最近公共祖先 ...
- Flask实战第39天:完成前台注册界面
在template下创建目录front,该目录用于存放前台页面的所有模板 在front下创建登录模板 <!DOCTYPE html> <html lang="en" ...
- 如何使用Web字体?
如何使用Web字体 嵌入Web字体的关键是@font-face规则,通过它可以指定浏览器下载web字体的地址,以及如何在样式表中引用该字体 @font-face { font-family: Voll ...
- cogs 1075. [省常中2011S4] 最短路径问题
1075. [省常中2011S4] 最短路径问题 ★ 输入文件:short.in 输出文件:short.out 简单对比 时间限制:1 s 内存限制:128 MB [问题描述] 平面上 ...