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