1

既存の DDL ファイルを使用してテーブルを作成しようとしていますが、ステートメントは次のようになります。

CREATE TABLE SYSTEM.LS_Ss_VERSION 
    ( 
     ID NUMBER (20)  NOT NULL , 
     SSID NUMBER (20) , 
     CONTENT VARCHAR2 (4000 BYTE) , 
     CREATEDBY NUMBER (20) , 
     CREATED_ON DATE DEFAULT 'NULL' 
    ) 

取得しているエラーは

SQL Error: ORA-01858: a non-numeric character was found where a numeric was expected
01858. 00000 -  "a non-numeric character was found where a numeric was expected"
*Cause:    The input data to be converted using a date format model was
           incorrect.  The input data did not contain a number where a number was
           required by the format model.

私はグーグルを検索しましたが、適切な解決策を得ることができませんでした..ここで解決策を提案してください。

4

2 に答える 2

4

'NULL' を null に削除し、http://sqlfiddle.com/#!4/256abで試してテストしてください:

CREATE TABLE LS_Ss_VERSION 
    ( 
     ID NUMBER (20)  NOT NULL , 
     SSID NUMBER (20) , 
     CONTENT VARCHAR2 (4000 BYTE) , 
     CREATEDBY NUMBER (20) , 
     CREATED_ON DATE DEFAULT NULL 
    ) 
于 2012-11-09T05:09:02.897 に答える
2

あなたの問題はこれです:

CREATED_ON DATE DEFAULT 'NULL' 

'NULL'文字列であるため、データベースは、 などのデフォルトとして指定されているマスクを使用した暗黙的なデータ変換として解釈しますがto_date('NULL', 'DD-MON-YYYY')、これは明らかにナンセンスです。

行に入力するときに値を指定しない場合、システムは (文字列ではなく) NULL を入れるので、これを指定する必要はありません ...

CREATED_ON DATE DEFAULT NULL

…とにかく、それは起こることです。ただし、列の名前を考えると、次のように指定する方が理にかなっています。

CREATED_ON DATE DEFAULT SYSDATE
于 2012-11-09T05:14:21.067 に答える