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>