本帖最后由 刘泽宇 于 2025-2-25 16:20 编辑
sqlserver配置了访问oracle的链接服务器后,可以查询到oracle上的数据
但这种查询方式会有一个很常见的问题,即查询速度慢,我这里20条记录的测试表都使用了6s
还有另外一种方式,使用openquery
openquery是在指定的链接服务器上执行指定的传递查询。 该服务器是 OLE DB 数据源。 OPENQUERY 可以在查询的 FROM 子句中引用,就好象它是一个表名。
OPENQUERY 也可以作为 INSERT、UPDATE 或 DELETE 语句的目标表进行引用。 但这要取决于 OLE DB 访问接口的功能。尽管查询可能返回多个结果集,但是 OPENQUERY 只返回第一个。
上面的查询可以使用这样的语句实现:
select * from openquery(orclpdb,'select * from employees');
如果sql中要包含单引号,就多敲一个'转义
如:select * from openquery(orclpdb,'select * from employees where first_name=''Steven''');
补充:openquery还可以用于update、insert、delete
UPDATE OPENQUERY ([linkedServerName], 'SELECT name FROM t2 WHERE id = 101') SET name = 'ADifferentName';
INSERT OPENQUERY ([linkedServerName], 'SELECT name FROM t3') VALUES ('NewTitle');
DELETE OPENQUERY ([linkedServerName], 'SELECT name FROM t4 WHERE name = ''NewTitle''');
|