My Oracle Support Banner

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!


本書の内容
現象
原因
解決策
参照情報

My Oracle Support provides customers with access to over a million knowledge articles and a vibrant support community of peers and Oracle experts.