PLSQL Language Referenc-PL/SQL集合和記錄-NSL引數值對字串索引的關聯陣列的影響

LuiseDalian發表於2014-03-11

NSL引數值對字串索引的關聯陣列的影響

Natongal Language Support(NLS)引數,例NLS_SORTNLS_COMPNLS_DATE_FORMAT會影響用字串索引的關聯陣列。

1)在填充了關聯陣列之後改變NLS引數的值

初始化引數NLS_SORTNLS_COMP決定用字元索引的關聯陣列的索引的儲存存順序。如果在填充了用字串索引的關聯陣列之後,改變了任何一個引數,則集合的方法FIRSTLASTNEXTPRIOR會返回不希望的值或產生異常。如果必須要在會話改變這些初始化引數的值,可以在改變之後重新填充字元索引的關聯陣列。

2)非VARCHAR2資料型別的索引

在用字串索引的關聯陣列的宣告中,字串的型別必須是VARCHAR2或它的子型別。然而可以使用任何可以被TO_CHAR轉換為VARCHAR2型別的索引來填充關聯陣列。

如果你的索引有不是VARCHAR2型別和它的子型別的,要確保這些索引在初始化引數改變之後是一致的和唯一的。

n  不要使用to_char(sysdate)作為索引,因為nls_data_format改變之後,這個值也變了。

n  不要使用可能被轉換為相同的VARCHAR2值的不同的NVARCHAR2值做索引。

n  不要使用僅僅在大小寫、音標字元、語調字元不同的CHARVARCHAR2索引

如果NLS_SORT引數以_CIAI結束,則僅有大小寫、音標、音調不同的索引可能被轉換為相同的值。

3)將關聯資料傳遞給遠端資料庫

如果將關聯陣列作為引數傳遞給遠端資料庫,並且本地和遠端資料庫有不同的NLS_SORTNLS_COMP引數值:

n  集合的方法FIRSTLASTNEXTPRIOR會返回不希望的值或產生異常。

n  在本地資料庫上唯一的索引在遠端資料庫上可能會不唯一,會產生預定義的VALUE_ERROR異常。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/17013648/viewspace-1107198/,如需轉載,請註明出處,否則將追究法律責任。

相關文章