DOMAIN_NAME
Purpose
DOMAIN_NAME
returns the fully qualified name of the domain associated with expr
. This returns NULL
if expr is associated with a domain.
When calling DOMAIN_NAME
for multicolumn domains, all values of expr
should be from the same domain. It returns NULL
if the number of expr
arguments are different from the number of domain columns or they are in a different order in the domain.
See Also:
Examples
The following example creates the domain DAY_OF_WEEK
in the schema HR
and associates it with the column HR.CALENDAR_DATES.DAY_OF_WEEK_ABBR
. Passing this column to DOMAIN_NAME
returns the fully qualified name of the domain.
The query casts the string "MON
" to DAY_OF_WEEK
to get the domain name.
All other calls to DOMAIN_NAME
return NULL
.
CREATE DOMAIN hr.day_of_week AS CHAR(3 CHAR);
CREATE TABLE hr.calendar_dates ( calendar_date DATE, day_of_week_abbr hr.day_of_week );
INSERT INTO hr.calendar_dates VALUES(DATE'2023-05-01', 'MON');
SELECT day_of_week_abbr, DOMAIN_NAME(day_of_week_abbr) domain_column, DOMAIN_NAME(calendar_date) nondomain_column, DOMAIN_NAME(CAST('MON' AS hr.day_of_week)) domain_value, DOMAIN_NAME('MON') nondomain_value FROM hr.calendar_dates; DAY_OF_WEEK_ABBR DOMAIN_COLUMN NONDOMAIN_COLUMN DOMAIN_VALUE NONDOMAIN_VALUE ---------------- -------------- ---------------- -------------- --------------- MON HR.DAY_OF_WEEK <null> HR.DAY_OF_WEEK <null>
The following example creates the multicolumn domain CURRENCY
in the schema CO
. The columns AMOUNT
and CURRENCY_CODE
in CO.ORDER_ITEMS
are associated with this domain.
In the query, the arguments for DOMAIN_NAME
only match the domain definition for the domain_cols expression. This returns the fully qualified name of the domain. All other calls to DOMAIN_NAME
have a mismatch between its arguments and the domain columns so return NULL
:
CREATE DOMAIN co.currency AS ( amount AS NUMBER(10, 2) currency_code AS CHAR(3 CHAR) );
CREATE TABLE co.order_items ( order_id INTEGER, product_id INTEGER, amount NUMBER(10, 2), currency_code CHAR(3 CHAR), DOMAIN co.currency(amount, currency_code) );
INSERT INTO co.order_items VALUES (1, 1, 9.99, 'USD');
SELECT order_id, product_id, DOMAIN_NAME(amount, currency_code) domain_cols, DOMAIN_NAME(currency_code, amount) domain_cols_wrong_order, DOMAIN_NAME(order_id, product_id) nondomain_cols, DOMAIN_NAME(amount) domain_cols_subset FROM co.order_items ORDER BY domain_cols; ORDER_ID PRODUCT_ID DOMAIN_COLS DOMAIN_COLS_WRONG_ORDER NONDOMAIN_COLS DOMAIN_COLS_SUBSET ---------- ---------- --------------- ------------------------- --------------- -------------------- 1 1 CO.CURRENCY <null> <null> <null>