日期:2014-05-19  浏览次数:20476 次

100分问高手:如何给mssql提供一个接口访问oracle中多个结构相同的表?
orcle中的表按小时生成,如A-2007031400,A-2007031401,...,A-2007031423,A-2007031500,A-2007031501,...,A-2007031523...等,如何实现在mssql中用A就可以访问上述以A开头的数据表?

------解决方案--------------------
用链接服务器,并在Oracle分配给连接用户访问指定表的权限。
------解决方案--------------------
至于连接.建立好主机字符串,连接到oracle.

如何实现在mssql中用A就可以访问上述以A开头的数据表?
这个要用到系统表了.帮顶.
------解决方案--------------------
ql server中操作ORACLE是用这程方式的吧:
EXEC sp_addlinkedserver 'oracle_link ',
'Oracle 7.3 ',
'MSDAORA ',
'ORCLDB '
GO
delete from openquery(oracle_link, 'select * from tt ')
但如果我想根据某个字段删除一条记录的时候怎么办呢?比如,我要根据tt表中的字段t删除记录,而t又是动态生成的怎么办,我试过下面这种方式,但是不行:
declare @v varchar(100)
set @v=33
delete from openquery(oracle_link, 'select * from tt where t= '+@v)
希望高手能进来帮帮忙,谢谢


C. 使用用于 Oracle 的 Microsoft OLE DB 提供程序
此示例创建一台名为 LONDON Mktg 的链接服务器,该服务器使用用于 Oracle 的 Microsoft OLE DB 提供程序,并且假设此 Oracle 数据库的 SQL*Net 别名为 MyServer。

USE master
GO
-- To use named parameters:
EXEC sp_addlinkedserver
@server = 'LONDON Mktg ',
@srvproduct = 'Oracle ',
@provider = 'MSDAORA ',
@datasrc = 'MyServer '
GO
-- OR to use no named parameters:
USE master
GO
EXEC sp_addlinkedserver
'LONDON Mktg ',
'Oracle ',
'MSDAORA ',
'MyServer '
GO


exec( 'delete from openquery(oracle_link, ' 'select * from tt where t= ' '+@v+ ') ')


------解决方案--------------------
帮顶,并学习
------解决方案--------------------
用存儲過程可以實現
存儲過程里面動態取其A開頭的表,union all 起來
最后返回數據集