在SPL程序中的数据库对象既可以被限定名称所引用也可以被非限定名称所引用。一个限定名称的构成形式为schema.name, 其中shcema是带有标识名“name”的数据库对象所属模式的名称。非限定名称没有“schema.”部分。当对限定名称进行引用时,不会出现对象引用不明确的情况,在指定的模式中,对象要么存在,要么不存在。

如果使用非限定名称来定位对象,就会要求使用当前用户的搜索路径。当一个用户变成了会话的当前用户时,会使用缺省的搜索路径与这个用户相关联。搜索路径由模式列表组成, 在定位对带有非限定名称的数据对象引用时的搜索顺序为从左到右。如果在搜索路径的所有的模式中没有找到相应的对象,那么就会认为这个对象不存在。在PSQL中可以使用SHOW search_path命令来显示缺省搜索路径。
SHOW search_path;

     search_path
----------------------
 $user,public,sys,dbo
(1 row)

在上面显示的搜索路径中,$user是指向当前会话用户的普通占位符,所以如果上面的会话中的当前用户是enterprisedb。那么在下列模式中以如下顺序搜索一个带有非限定名称的数据库对象-首先是enterprisedb, 然后public,随后sys, 最后是dbo。

当在搜索路径上能够解析到一个非限定的数据库对象名称时,就能够确认当前用户在指定的对象上是否具有执行相应操作的权限。

说明 搜索路径这个概念与Oracle不兼容。对于一个非限定的引用,Oracle只在当前用户的模式中搜索相关命名的数据库对象。还有一点很重要的是,在Oracle中,一个用户和其所属的模式属于同一个实体,然而在 POLARDB for Oracle,用户和模式属于两个不同的对象。