ALTER SESSION文は、NLS_SORT、NLS_LENGTH_SEMANTICSおよびNLS_NCHAR_CONV_EXCPセッション・パラメータを動的に変更します。
この処理には、特別な権限は必要ありません。
SQL構文
ALTER SESSION SET
{NLS_SORT = {BINARY| SortName} |
NLS_LENGTH_SEMANTICS = {BYTE| CHAR} |
NLS_NCHAR_CONV_EXCP = {TRUE|FALSE}
}
ALTER SESSION文には、次のパラメータがあります。
NLS_SORT = {BINARY| SortName} | 言語の比較に使用する照合の順番を示します。 大/小文字を区別しない場合またはアクセントを区別しない場合は、BINARYまたはSortName値に_CIまたは_AIを追加します。 NLS_SORTを指定しない場合、デフォルトはBINARYです。「例5.15」を参照してください。
SortNameに指定できるすべての値のリストは、『Oracle TimesTen In-Memory Databaseオペレーション・ガイド』の、サポートされている言語ソートに関する説明を参照してください。 大/小文字を区別しないソート、またはアクセントを区別しないソートの詳細は、大/小文字またはアクセントを区別しない言語ソートに関する説明を参照してください。 |
NLS_LENGTH_ SEMANTICS = {BYTE | CHAR} | 長さセマンティクス構成のデフォルトを設定します。BYTEはバイト長セマンティクスを示し、CHARは文字長セマンティクスを示します。デフォルトはBYTEです。
長さセマンティクスの詳細は、『Oracle TimesTen In-Memory Databaseオペレーション・ガイド』の長さセマンティクスおよびデータ記憶域に関する説明を参照してください。 |
NLS_NCHAR_ CONV_EXCP = {TRUE | FALSE} | NCHAR/NVARCHAR2データとCHAR/VARCHAR2データ間でキャラクタ・タイプの暗黙的または明示的な変換中にデータの損失があった場合に、エラーを報告するかどうかを指定します。TRUEを指定するとエラーが報告され、FALSEを指定するとエラーは報告されません。デフォルトはFALSEです。 |
たとえば、CHAR (10)と定義された列の場合、キャラクタ・セットのエンコードに関係なく、この列には10文字が収まると想定されます。しかし、キャラクタ・セットのエンコードがUTF-8の場合は、最大40バイトが必要になります。TimesTenでは、文字長およびバイト長セマンティクスをサポートすることで、このような問題を回避します。
次の例では、ALTER SESSION文を使用してNLS_SORT設定をBINARYからBINARY_CIに変更し、さらにBINARY_AIに変更しています。データベースおよび接続のキャラクタ・セットはWE8ISO8859P1です。
Command> connect "dsn=cs;ConnectionCharacterSet=WE8ISO8859P1";
Connection successful: DSN=cs;UID=user;DataStore=/datastore/user/ cs;
DatabaseCharacterSet=WE8ISO8859P1;
ConnectionCharacterSet=WE8ISO8859P1;PermSize=32;TypeMode=0;
(Default setting AutoCommit=1)
Command>#Create the Table
Command> CREATE TABLE CollatingDemo (Letter VARCHAR2 (10));
Command>#Insert values
Command> INSERT INTO CollatingDemo VALUES ('a');
1 row inserted.
Command> INSERT INTO CollatingDemo VALUES ('A');
1 row inserted.
Command> INSERT INTO CollatingDemo VALUES ('Y');
1 row inserted.
Command> INSERT INTO CollatingDemo VALUES ('ä');
1 row inserted.
Command>#SELECT
Command> SELECT * FROM CollatingDemo;
< a >
< A >
< Y >
< ä >
4 rows found.
Command>#SELECT with ORDER BY
Command> SELECT * from CollatingDemo ORDER BY Letter;
< A >
< Y >
< a >
< ä >
4 rows found.
Command>#set NLS_SORT to BINARY_CI and SELECT
Command> ALTER SESSION SET NLS_SORT = BINARY_CI;
Command> SELECT * from CollatingDemo ORDER BY Letter;
< a >
< A >
< Y >
< ä >
4 rows found.
Command>#Set NLS_SORT to BINARY_AI and SELECT
Command> ALTER SESSION SET NLS_SORT = BINARY_AI;
Command> SELECT * from CollatingDemo ORDER BY Letter;
< ä >
< a >
< A >
< Y >
4 rows found.