a)使用T-SQL语法: SELECT * FROM LNK1..用户名.表名--注意用户名称,表名称要大写。 b)使用PLSQL语法: select * from openquery(LNK1,'select * from 用户名.表名') update openquery(linked1, 'select ssn from testlinked where ssn=2') set ssn=ssn + 1 insert openquery(linked1, 'select ssn from testlinked where 1=0') values (1000) delete openquery(linked1, 'select ssn from testlinked where ssn>100')第二种访问方式比第一种约快50%;第二种访问方式跟直连ORACLE的速度相当; 第一种访问方式可能会导致一些意外错误,如:该表不存在,或者当前用户没有访问该表的权限。 如果需要访问的column中使用没有精度的数据类型,这两种查询方式都可能会报错,这是ORACLE的BUG, 无法修正,只能通过查询语句的特殊处理规避这一问题: OLE DB 提供程序 'OraOLEDB.Oracle' 为列提供的元数据不一致。执行时更改了元数据信息。
SELECT * FROM LNK1..用户名.表名--注意用户名称,表名称要大写。
b)使用PLSQL语法:
select * from openquery(LNK1,'select * from 用户名.表名')
update openquery(linked1, 'select ssn from testlinked where ssn=2') set ssn=ssn + 1
insert openquery(linked1, 'select ssn from testlinked where 1=0') values (1000)
delete openquery(linked1, 'select ssn from testlinked where ssn>100')第二种访问方式比第一种约快50%;第二种访问方式跟直连ORACLE的速度相当;
第一种访问方式可能会导致一些意外错误,如:该表不存在,或者当前用户没有访问该表的权限。
如果需要访问的column中使用没有精度的数据类型,这两种查询方式都可能会报错,这是ORACLE的BUG,
无法修正,只能通过查询语句的特殊处理规避这一问题:
OLE DB 提供程序 'OraOLEDB.Oracle' 为列提供的元数据不一致。执行时更改了元数据信息。