Example 1: Creating a domain for a standard EMPLOYEE_ID
definition
The following example creates the domain ID_DOM, which will be a
standard definition of columns for the employee ID:
SQL> CREATE DOMAIN ID_DOM CHAR(5)
SQL> COMMENT IS
cont> 'standard definition of employee id';
Example 2: Creating a domain for standard date
The following example creates the domain STANDARD_DATE_DOM, which
includes the edit string DD-MMM-YYYY:
SQL> CREATE DOMAIN STANDARD_DATE_DOM DATE
cont> EDIT STRING IS 'DD-MMM-YYYY'
SQL> COMMENT IS
cont> 'standard definition for complete dates';
Example 3: Creating domains with default values
The following example creates two domains: ADDRESS_DATA2_DOM and
WORK_STATUS_DOM. The ADDRESS_DATA2_DOM domain has a default value
of NULL; the WORK_STATUS_DOM domain has a default value of 1 to
signify full-time work status.
SQL> CREATE DOMAIN ADDRESS_DATA2_DOM CHAR(20)
cont> DEFAULT NULL;
SQL> --
SQL> CREATE DOMAIN WORK_STATUS_DOM SMALLINT
cont> DEFAULT 1;
Example 4: Basing a domain on a repository field definition
The following example illustrates using the repository as a
source for the definition in a CREATE DOMAIN statement:
$ SQL$
SQL> ATTACH 'PATHNAME CDD$TOP.SQL.RDB.TEST.DATE';
SQL> CREATE DOMAIN FROM DOMAIN_TEST;
SQL> SHOW DOMAIN
User domains in database with pathname
SYS$COMMON:[CDDPLUS]SQL.RDB.TEST.DATE;1
DOMAIN_TEST BIGINT
Example 5: Creating a domain with a collating sequence
The following example creates a domain with the predefined NCS
collating sequence SPANISH. Note that you must first execute the
CREATE COLLATING SEQUENCE statement:
SQL> --
SQL> CREATE COLLATING SEQUENCE SPANISH SPANISH;
SQL> CREATE DOMAIN LAST_NAME_SPANISH CHAR(14)
cont> COLLATING SEQUENCE IS SPANISH;
SQL> --
SQL> SHOW DOMAIN LAST_NAME_SPANISH
LAST_NAME_SPANISH CHAR(14)
Collating sequence: SPANISH
Example 6: Creating a domain using the database default character
set
For each of the following examples, assume the database was
created specifying the database default character set as DEC_
KANJI and the national character set as KANJI.
The following example creates the domain DEC_KANJI_DOM using the
database default character set:
SQL> SHOW CHARACTER SET;
Default character set is DEC_KANJI
National character set is KANJI
Identifier character set is DEC_KANJI
Literal character set is DEC_KANJI
Alias RDB$DBHANDLE:
Identifier character set is DEC_KANJI
Default character set is DEC_KANJI
National character set is KANJI
SQL> CREATE DOMAIN DEC_KANJI_DOM CHAR(8);
SQL> SHOW DOMAIN
User domains in database with filename MIA_CHAR_SET
DEC_KANJI_DOM CHAR(8)
Because the CREATE DOMAIN statement does not specify a character
set, Oracle Rdb defines the domain using the database default
character set. The database default character set does not
display with the SHOW DOMAIN statement.
An equivalent statement to the previous CREATE DOMAIN statement
is:
SQL> CREATE DOMAIN DEC_KANJI_DOM CHAR(8) CHARACTER SET DEC_KANJI;
Example 7: Creating a domain using the national character set
The following example creates the domain KANJI_DOM using the
NCHAR data type to designate use of the national character set:
SQL> CREATE DOMAIN KANJI_DOM NCHAR(8);
SQL> SHOW DOMAIN
User domains in database with filename MIA_CHAR_SET
DEC_KANJI_DOM CHAR(8)
KANJI_DOM CHAR(8)
KANJI 8 Characters, 16 Octets
When a character set other than the default is specified, the
SHOW DOMAIN statement displays the character set associated with
the domain.
Two statements equivalent to the previous CREATE DOMAIN statement
are:
SQL> CREATE DOMAIN KANJI_DOM NATIONAL CHAR(8);
SQL> CREATE DOMAIN KANJI_DOM CHAR(8) CHARACTER SET KANJI;
Example 8: Creating a domain constraint
The following example creates a domain constraint:
SQL> -- The SET DIALECT 'SQL99' statement sets the default date format
SQL> -- to the ANSI/ISO SQL standard format.
SQL> --
SQL> SET DIALECT 'SQL99';
SQL> --
SQL> -- The following domain ensures that any dates inserted into the database
SQL> -- are later than January 1, 1900:
SQL> --
SQL> CREATE DOMAIN TEST_DOM DATE
cont> DEFAULT NULL
cont> CHECK (VALUE > DATE'1900-01-01' OR
cont> VALUE IS NULL)
cont> NOT DEFERRABLE;
SQL>
SQL> -- The following example creates a table with one column based on the
SQL> -- domain TEST_DOM:
SQL> --
SQL> CREATE TABLE DOMAIN_TEST
cont> (DATE_COL TEST_DOM);
SQL> --
SQL> -- SQL returns an error if you attempt to insert data that does not
SQL> -- conform to the domain constraint:
SQL> --
SQL> INSERT INTO DOMAIN_TEST
cont> VALUES (DATE'1899-01-01');
%RDB-E-NOT_VALID, validation on field DATE_COL caused operation to fail