SET SESSION CALENDARリクエストに関するルールと制約事項を以下にまとめます。
- SET SESSION CALENDARを使用して、次のいずれかのシステム定義の業務カレンダを指定できます。
- Teradata
- ISO
- COMPATIBLE
ユーザー定義の業務カレンダを指定することはできません。
- すべてのセッションのデフォルトのカレンダはTeradataです。
新しくログオンすると、セッションのカレンダは、常にデフォルトでシステム定義の業務カレンダTeradataに設定されますが、SET SESSION CALENDARリクエストを使用してデフォルトを変更することもできます。
ユーザーの始動文字列にSET SESSION CALENDARリクエストを組み込んで、デフォルトのTeradataカレンダ以外のカレンダを設定することも可能です。STARTUP文字列でセッション カレンダを設定すると、接続プーリング中の動作の一貫性が失われることがあります。
次のCREATE USER文では、STARTUP文字列オプションを使用して、ユーザーabcのデフォルトのセッション カレンダをISOに設定します。
CREATE USER abc AS PERM=10E6, PASSWORD=abc, SPOOL = 1200000, FALLBACK PROTECTION, STARTUP=’SET SESSION CALENDAR=ISO’;
- セッション定義の業務カレンダは、そのセッションで実行するDMLリクエストのEXPAND ON句で指定するアンカー名とシステム定義カレンダUDFにも適用されます。
例えば、WEEK_BEGINによる展開の場合、ISOカレンダではMONDAYによる展開、TeradataカレンダではSUNDAYによる展開になります。
- カレンダUDFの2番目の引数として業務カレンダを指定しない場合は、セッションで指定されているカレンダがTeradata Databaseによって適用されます。
- セッションで設定されているシステム定義の業務カレンダは、データベースの再始動後もそのまま保持されます。
セッションのカレンダ名は、DBC.SessionTblに格納されているので、再始動があっても、再始動前に設定されていたのと同じ業務カレンダでセッションを再確立できます。
- システム定義の業務カレンダは、セッション中にいつでも変更できます。
- セッションで設定されているシステム定義の業務カレンダは、そのセッション中に何度でも変更できます。
- Sys_Calendar.Calendarビュー列とSys_Calendar.BusinessCalendarビュー列からは、セッションで設定されているカレンダに関連した値が返されます。