Search code examples
oracle-databaseddlcreate-tablenvarchar

Automatic adjustment of a field in Oracle


Hello I'm trying to create a table under Oracle 18.1 (SQL Dev).

But I have an error "ORA-00906: missing right parenthesis"

CREATE TABLE DIM_TAB (
ID Number PRIMARY KEY,
TEST nvarchar2,
TEST_2 nvarchar,
DATE DATE not null 
);

How to create a field without specifying the size of it in nvarchar (or nvarchar2) on Oracle? (I want the field size to adjust automatically)

Thank you


Solution

  • You have three problems. One, you must specify a maximum number of characters for a VARCHAR2 or NVARCHAR2 column. If you have data that will exceed 4000 bytes (not characters), then just use a CLOB. Second, there is no NVARCHAR data type. Third, you cannot create a column named "date," since that's a reserved word. What you want is something like this:

    CREATE TABLE DIM_TAB (
        id        number PRIMARY KEY,
        test      nvarchar2(30),
        test_2    nvarchar2(30),
        the_date  date not null 
    );
    

    Personally, I would use a NUMBER(10) for your id, but that's a minor quibble.

    You might want to read up on the NCHAR and NVARCHAR data types.