日期:2014-05-17  浏览次数:20595 次

十万火急,SQLServer 对接“Oracle”数据库,急急急。。。
declare @LastTime    char(10)

set @LastTime = CONVERT(varchar(100),(select  top 1   DATime  from  DataETL  where  MeterType='WM'  order  by  DATime  desc),23)
set  @oraclesql='select  f_meter_code, f_meterday_date, f_meterday_used  from  t_rp_meter_dayenergytemp   where    f_meterday_date >    '''+@LastTime+''''


declare ImpCursor cursor for select f_meter_code, f_meterday_date, f_meterday_used
 from openrowset('msdaora','.';'scott';'123456',''''+@oraclesql+'''')

问题一:这样“拼接字符串”做为参数好像不行啊???    直接以‘select  f_meter_code, f_meterday_date, f_meterday_used  from  t_rp_meter_dayenergytemp ’做为参数是没有问题的,那么“@LastTime” 变量怎样传入方法中呢???

问题二:写的“openrowset”方法访问本地“Oracle”数据库没有问题吧。
msdaora:MSDAORA是OLEDB FOR ORACLE的驱动

".":本地服务器

"scott":用户名

"123456":密码

"@oraclesql":操作语句

疑问:不用指定“Oracle”数据库的名字啊???    数据库的名字叫做“orcl”...不用指定吗???


感谢各位大师。。。
         



------解决方案--------------------
这个还真不懂,
------解决方案--------------------
你去问问版主
------解决方案--------------------
問題一: 用動態語句 (e.g. declare @sql nvarchar(max);select @sql=**;Exec (@sql))
問題二: 注意Oracle里面的大小寫區分
------解决方案--------------------
http://social.msdn.microsoft.com/Forums/zh-CN/sqlserverzhchs/thread/fc303057-9734-4f95-9b59-eac91897a773