通过限定数据库对象(表、视图、同义词或例程)的名称,您可访问外部数据库中的任何 表或例程。 当外部表与当前数据库位于同一数据库服务器上时,您必须以数据库名称和冒号限定对象 名称。例如,要引用不是本地数据库的数据库中的表,下列 SELECT 语句访问来自外部数 据库的信息:
SELECT name, number FROM salesdb:contacts?
在此示例中,查询从表 contacts 返回数据,该表在数据库 salesdb 中。 远程数据库服务器是不是当前数据库服务器的任何数据库服务器。当外部表在远程数据库 服务器上时,您必须以数据库服务器名称和数据库名称来限定数据库对象的名称,如下例 所示:
SELECT name, number FROM salesdb@distantserver:contacts?
在此示例中,查询从表 contacts 返回数据,该表在远程数据库服务器 distantserver 上的数 据库 salesdb 中。 要了解关于如何在外部数据库中指定数据库对象的语法和规则,请参阅《GBase 8s SQL 指 南:语法》。
1 访问 ANSI 数据库 在 ANSI 数据库中,对象的所有者是对象名称的一部分: ownername.objectname。当当前 数据库和外部数据库都是 ANSI 数据库时, 除非您是该对象的所有者,否则您必须包括 所有者名称。 下列 SELECT 语句展示完全限定的表名称:?
SELECT name, number FROM salesdb@aserver:ownername.contacts?
提示: 您始终可“超限定”对象名。即,您可指定完全的对象名称, database@servername:ownername.objectname,即使在您不需要完全的对象名称的情况下。?
2 在外部数据库服务器之间创建连接 您可在连接中使用相同的表示法。当您显式地指定数据库名称时,长的表名称可能会比较 累赘,除非您使用别名来缩短它们,如下例所示: SELECT O.order_num, C.fname, C.lname FROM masterdb@central:customer C, sales@boston:orders O WHERE C.customer_num = O.Customer_num GBase 8s SQL 指南:教程 南大通用数据技术股份有限公司 - 196 - 8.1.3 访问外部例程 要引用不是当前数据库服务器的数据库服务器上的例程,请以数据库服务器名称和数据库 名称(以及所有者名称,如果远程数据库符合 ANSI 的话)来限定例程名称,如下列 SELECT 语句所示:
SELECT name, salesdb@boston:how_long()?
?FROM salesdb@boston:contacts??