Re: Riddle me this, Batman. Why get an ora-922 when creating a partition?

  • From: Harel Safra <harel.safra@xxxxxxxxx>
  • To: bbel5@xxxxxxxxxxxx
  • Date: Wed, 05 May 2010 20:15:38 +0300

You should have opening paranthesis "(" before the partitions and closing parenthesis ")" after.

From the docs:

CREATE TABLE sales_range
(salesman_id  NUMBER(5),
salesman_name VARCHAR2(30),
sales_amount  NUMBER(10),
sales_date    DATE)
PARTITION BY RANGE(sales_date)
(
PARTITION sales_jan2000 VALUES LESS THAN(TO_DATE('02/01/2000','DD/MM/YYYY')), PARTITION sales_feb2000 VALUES LESS THAN(TO_DATE('03/01/2000','DD/MM/YYYY')), PARTITION sales_mar2000 VALUES LESS THAN(TO_DATE('04/01/2000','DD/MM/YYYY')),
PARTITION sales_apr2000 VALUES LESS THAN(TO_DATE('05/01/2000','DD/MM/YYYY'))
);

Harel Safra

On 05/05/2010 20:04, Bellows, Bambi (Comsys) wrote:

Let's create a partitioned table, and partition on date. Let's make it as easy as can be.

SQL>  CREATE TABLE JUNK1

  2  (

  3  column_info_int       number          NOT NULL,

  4  column_info_date    date               NOT NULL

  5  )

  6  PARTITION BY RANGE (column_info_date)

7* PARTITION cid20thcentury VALUES LESS THAN (TO_DATE('2000-01-01', 'YYYY-MM-DD'))

Now, let's run it.

SQL> /

PARTITION cid20thcentury VALUES LESS THAN (TO_DATE('2000-01-01', 'YYYY-MM-DD'))

*

ERROR at line 7:

ORA-00922: missing or invalid option

Now, let's test that predicate separately... just to make sure there are no hidden characters or a bad number of parenthesis...

SQL> select (TO_DATE('2000-01-01', 'YYYY-MM-DD')) from dual;

(TO_DATE(

---------

01-JAN-00

OK... version info...

Oracle Database 11g Enterprise Edition Release 11.1.0.7.0 - 64bit Production

With the Partitioning, Real Application Clusters and Real Application Testing options

I see that 922 has been kind of a bugaboo, and there's the range/hash thing, but, I don't see how that applies here.

What say the OraWizards?  Does the Riddler win the day?

Bambi.

Other related posts: