orcle中的表按小时生成,如A-2007031400,A-2007031401,...,A-2007031423,A-2007031500,A-2007031501,...,A-2007031523...等,如何实现在mssql中用A就可以访问上述以A开头的数据表?

解决方案 »

  1.   

    用链接服务器,并在Oracle分配给连接用户访问指定表的权限。
      

  2.   

    如,我只需要 select * from ora.A 就可以访问oracle中的数据。
      

  3.   

    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+')')
      

  4.   

    用存儲過程可以實現
    存儲過程里面動態取其A開頭的表,union all 起來
    最后返回數據集