DOMAIN_NAME
目的
DOMAIN_NAMEは、exprに関連付けられたドメインの完全修飾名を戻します。exprがドメインに関連付けられている場合、NULLが戻されます。
複数列ドメインに対してDOMAIN_NAMEをコールする場合、exprのすべての値が同じドメインのものである必要があります。expr引数の数がドメイン列の数と異なる場合、またはドメイン内の順序が異なる場合、NULLを戻します。
関連項目:
例
次の例では、スキーマHRにドメインDAY_OF_WEEKを作成し、それを列HR.CALENDAR_DATES.DAY_OF_WEEK_ABBRに関連付けます。この列をDOMAIN_NAMEに渡すと、ドメインの完全修飾名が戻されます。
問合せは、文字列"MON"をDAY_OF_WEEKにキャストしてドメイン名を取得します。
DOMAIN_NAMEへのその他のすべてのコールは、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> 次の例では、スキーマCOに複数列ドメインCURRENCYを作成します。CO.ORDER_ITEMSの列AMOUNTおよびCURRENCY_CODEがこのドメインに関連付けられています。
問合せでは、DOMAIN_NAMEの引数は、domain_cols式のドメイン定義にのみ一致します。これにより、ドメインの完全修飾名が戻されます。DOMAIN_NAMEに対する他のすべてのコールの引数とドメイン列が一致しないため、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> 