在SSIS中,从ORACLE中查询数据,以日期字段查询条件,取某个时间段内的数据。形如:
select * from i_out_serv_scn where state_date >=? and state_date <?
?:表示参数。第一步:
定义包变量:maxdate 类型为DateTime
第二步:
取"执行SQL任务"组件,设置SQLStatement为:
select max(scn_time) md from i_out_data_scn_info where table_name = 'I_OUT_SERV_SCN'
第三步:
在执行SQL任务组件中设置结果集,结果名称为:md,值为:用户::maxdate
-----------------以上为给变量赋值----------------------
第四步:
取一“数据流任务”组件,双击进入"数据流"页面
第五步:
取一“OLEDB源”组件,设置连接为连接到ORACLE数据库,连接驱动为:microsoft old db provider for oracle(连接没有问题)
第六步:
设置访问模式为:SQL命令
select * from i_out_serv_mon where state_date >=? and state_date<?
第七步:
点“参数”按钮,提示:
------------------------------无法从 SQL 命令中提取参数。提供程序可能无法帮助分析命令中的参数信息。在这种情况下,请使用“变量中的 SQL 命令”访问模式。在该模式中,整个 SQL 命令存储在变量中。------------------------------
其他信息:提供程序不能导出参数信息,没有调用 SetParameterInfo 。 (Microsoft OLE DB Provider for Oracle)
大家帮忙看如何解决?
select * from i_out_serv_scn where state_date >=? and state_date <?
?:表示参数。第一步:
定义包变量:maxdate 类型为DateTime
第二步:
取"执行SQL任务"组件,设置SQLStatement为:
select max(scn_time) md from i_out_data_scn_info where table_name = 'I_OUT_SERV_SCN'
第三步:
在执行SQL任务组件中设置结果集,结果名称为:md,值为:用户::maxdate
-----------------以上为给变量赋值----------------------
第四步:
取一“数据流任务”组件,双击进入"数据流"页面
第五步:
取一“OLEDB源”组件,设置连接为连接到ORACLE数据库,连接驱动为:microsoft old db provider for oracle(连接没有问题)
第六步:
设置访问模式为:SQL命令
select * from i_out_serv_mon where state_date >=? and state_date<?
第七步:
点“参数”按钮,提示:
------------------------------无法从 SQL 命令中提取参数。提供程序可能无法帮助分析命令中的参数信息。在这种情况下,请使用“变量中的 SQL 命令”访问模式。在该模式中,整个 SQL 命令存储在变量中。------------------------------
其他信息:提供程序不能导出参数信息,没有调用 SetParameterInfo 。 (Microsoft OLE DB Provider for Oracle)
大家帮忙看如何解决?
2.如果单独执行sql,能够得到结果,但是在程序中,或者页面(界面)上无法显示数据,
那么这就不是sql问题,这就是你处理数据时出现的问题
定义包变量:maxdate 类型为String
定义包变量:sqlStatement类型为String,值为:select * from i_out_serv_mon
第二步:
取"执行SQL任务"组件,设置SQLStatement为:
select to_char(max(scn_time),'YYYY/MM/DD HH:MI:SS') md from i_out_data_scn_info where table_name = 'I_OUT_SERV_SCN'
第三步:
在执行SQL任务组件中设置结果集,结果名称为:md,值为:用户::maxdate
-----------------以上为给变量赋值----------------------
第四步:
取一 "脚本任务"组件,
脚本语言选择:Microsoft Visual Basic 2008,
只读变量:用户::maxdate
读写变量:用户::sqlStatement
点击编辑脚本:输入:
Dts.Variables("用户::sqlStatement").Value = Dts.Variables("用户::sqlStatement").Value + _
" where start_time >= to_date('" + Dts.Variables("用户::maxdate").Value.ToString + "','YYYY/MM/DD HH:MI:SS')" 取一“数据流任务”组件,双击进入"数据流"页面
第五步:
取一“OLEDB源”组件,设置连接为连接到ORACLE数据库,连接驱动为:microsoft old db provider for oracle(连接没有问题)
第六步:
设置访问模式为:
SQL命令SQL Command from variable变量名称选择:用户::sqlStatement
曲线救国,搞定!