Dateタイプのカラムにdefault値が設定されていると、DDLIMPが正しいSQL文を生成しません。
(Doc ID 1616022.1)
Last updated on FEBRUARY 04, 2019
適用範囲:
Siebel CRM - バージョン 7.8.2 [19213] 以降この文書の内容はすべてのプラットフォームに適用されます。
現象
Siebel Tools Client を用いて、Physical Type が"Date", "Date Time", または "UTC Date Time" の Column オブジェクトにに対して default 値を設定することが出来ます。多くの場合は「現在の時刻」を指定しますが、ビジネス要件によっては特定の日付、たとえば'1900-01-01'を設定しなくてはならない場合があります。
この設定をデータベースの DDL 文に反映する際、以下の二つのシナリオによってその振る舞いが異なります。例として、以下のように default 値として'1900-01-01'を指定した UTC Date Time タイプのカラム DATE_COL を持つ、新たなスタンドアローンテーブル CX_TEST を定義します。
1) Siebel Tools Client から Apply/DDL の処理をする場合。
カラム DATE_COL は以下のように、Column オブジェクトの設定を正しく反映しています。
DATE_COL date default '1900-01-01'
2) DDLDICT ユーティリティおよび DDLIMP ユーティリティによって SQL 文を生成する場合。
2-1) DDLDICT によって生成された DDL ファイルは、以下のように Column オブジェクトの default 値を正しく保持しています。
Column 8 = DATE_COL TIMESTAMP DEFAULT '1900-01-01'
2-2) DDLIMP によって生成された SQL ファイルでは、以下のように引用符(')がなくなっています。
DATE_COL date default 1900-01-01
この結果として、DDLIMP によって生成されたSQL文を実行(または、DDLIMP を /Q パラメータなしで実行)するとエラーとなります。データベースのプラットフォームによって以下のいずれかのエラーが発生します。
<Oracle> ORA-00932: データ型が一致しません: DATEが予想されましたがNUMBERです。
<DB2> SQL0104N "default 1900" に続いて予期しないトークン "-" が見つかりました。予期されたトークンに "DEFAULT" が含まれている可能性があります。
<SQL Server> DDL はエラーになりませんが、DATE_COL の default 値は異常な値(たとえば '1905-03-14' )になります。
シナリオ2は、データベースのアップグレード作業中、特に upgphys の処理で発生する可能性があり、その場合は処理が完了しません。
原因
To view full details, sign in with your My Oracle Support account. |
|
Don't have a My Oracle Support account? Click to get started! |
本書の内容
現象 |
原因 |
解決策 |
参照情報 |