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是兩個不同的對象。