sqlserveropenquery的⽤法
对给定的链接服务器执⾏指定的传递查询。该服务器是 OLE DB 数据源。OPENQUERY 可以在查询的 FROM ⼦句中引⽤,就好象它是⼀个表名。OPENQUERY 也可以作为 INSERT、UPDATE 或 DELETE 语句的⽬标表进⾏引⽤。但这要取决于 OLE DB 访问接⼝的功能。尽管查询可能返回多个结果集,但是 OPENQUERY 只返回第⼀个。
Transact-SQL 语法约定
语法
OPENQUERY (linked_server ,'query')
参数
linked_server
表⽰链接服务器名称的标识符。
'query ''oracle数据库怎么查询表
在链接服务器中执⾏的查询字符串。该字符串的最⼤长度为 8 KB。
备注
OPENQUERY 不接受其参数的变量。
在 SQL Server 2000 和更⾼版本中,OPENQUERY 不能⽤于对链接服务器执⾏扩展存储过程。但是,通过使⽤四部分名称,可以在链接服务器上执⾏扩展存储过程。例如:
EXEC SeattleSales.master.dbo.xp_msver
权限
任何⽤户都可以执⾏ OPENQUERY。⽤于连接到远程服务器的权限是从为链接服务器定义的设置中获取的。
⽰例
A. 执⾏ SELECT 传递查询
以下⽰例将使⽤“⽤于 Oracle 的 Microsoft 访问接⼝”针对 Oracle 数据库创建⼀个名为 OracleSvr 的链接
服务器。然后,该⽰例针对此链接服务器使⽤ SELECT 传递查询。
注意:
本⽰例假定已经创建了⼀个名为 ORCLDB 的 Oracle 数据库别名。
EXEC sp_addlinkedserver 'OracleSvr',
'Oracle 7.3',
'MSDAORA',
'ORCLDB'
GO
SELECT *
FROM OPENQUERY(OracleSvr, 'SELECT name, id FROM joe.titles')
GO
B. 执⾏ UPDATE 传递查询
以下⽰例针对⽰例 A 中创建的链接服务器使⽤ UPDATE 传递查询。
UPDATE OPENQUERY (OracleSvr, 'SELECT name FROM joe.titles WHERE id = 101')
SET name = 'ADifferentName';
C. 执⾏ INSERT 传递查询
以下⽰例针对⽰例 A 中创建的链接服务器使⽤ INSERT 传递查询。
INSERT OPENQUERY (OracleSvr, 'SELECT name FROM joe.titles')
VALUES ('NewTitle');
D. 执⾏ DELETE 传递查询
以下⽰例使⽤ DELETE 传递查询删除⽰例 C 中插⼊的⾏。
DELETE OPENQUERY (OracleSvr, 'SELECT name FROM joe.titles WHERE name = ''NewTitle''');
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论