SPL程序中的数据库对象可以通过其限定名称或非限定名称进行引用。

限定名称采用schema.name形式,其中schema是其下存在标识符为name的数据库对象的schema名称。非限定名称没有schema.部分。在引用限定名称时,对于所指的确切数据库对象,不能有含糊不清之处,它存在或不存在于指定schema中。

不过,使用非限定名称查找对象需要使用当前用户的搜索路径。当用户成为会话的当前用户时,默认搜索路径始终与该用户相关联。搜索路径包含为查找非限定数据库对象引用而按从左到右的顺序搜索的schemas的列表。如果在搜索路径中的任何schema中都找不到对象,则将其视为不存在。在PSQL中,可以使用SHOW search_path命令显示默认搜索路径。

polardb=# SHOW search_path;
   search_path
-----------------
 "$user", public
(1 row)

上面的搜索路径中的$user是指代当前用户的通用占位符,因此如果上面的会话的当前用户为polardb,将在以下schema中按以下顺序搜索非限定数据库对象,首先搜索polardb,接下来搜索public。

在搜索路径中解析非限定名称后,可以确定当前用户是否具有对该特定对象执行所需操作的适当特权。

说明 搜索路径的概念与Oracle数据库不兼容。对于非限定引用,Oracle仅在当前用户的schema中查找指定的数据库对象。还请务必注意,在Oracle中,用户及其schema是相同实体,而在PolarDB PostgreSQL版(兼容Oracle)中,用户和schema是两个不同的对象。