Index based on case statement : Functional Index « Index « Oracle PL/SQL Tutorial






SQL>
SQL> create table registrations
  2  ( attendee    NUMBER(4)
  3  , course      VARCHAR2(6)
  4  , begindate   DATE
  5  , evaluation  NUMBER(1)) ;

Table created.

SQL>
SQL>
SQL> insert into registrations values (1, 'SQL',date '1999-04-12',4   );

1 row created.

SQL> insert into registrations values (2, 'SQL',date '1999-12-13',NULL);

1 row created.

SQL> insert into registrations values (3, 'SQL',date '1999-12-13',NULL);

1 row created.

SQL> insert into registrations values (4, 'OAU',date '1999-08-10',4   );

1 row created.

SQL> insert into registrations values (5, 'OAU',date '2000-09-27',5   );

1 row created.

SQL> insert into registrations values (6, 'JAV',date '1999-12-13',2   );

1 row created.

SQL> insert into registrations values (7, 'JAV',date '2000-02-01',4   );

1 row created.

SQL> insert into registrations values (8, 'JAV',date '2000-02-01',5   );

1 row created.

SQL> insert into registrations values (9, 'XML',date '2000-02-03',4   );

1 row created.

SQL> insert into registrations values (10,'XML',date '2000-02-03',5   );

1 row created.

SQL> insert into registrations values (1, 'PLS',date '2000-09-11',NULL);

1 row created.

SQL> insert into registrations values (2, 'PLS',date '2000-09-11',NULL);

1 row created.

SQL> insert into registrations values (3, 'PLS',date '2000-09-11',NULL);

1 row created.

SQL>
SQL>
SQL> create unique index oau_reg on registrations
  2  ( case course when 'OAU' then attendee else null end
  3  , case course when 'OAU' then course   else null end );

Index created.

SQL>
SQL> insert into registrations values (7900,'OAU',sysdate,null);

1 row created.

SQL>
SQL> drop index oau_reg;

Index dropped.

SQL>
SQL>
SQL> drop table registrations;

Table dropped.

SQL>








9.3.Functional Index
9.3.1.Functional index
9.3.2.Create a calculated index
9.3.3.Index based on case statement
9.3.4.Create index on upper case string value