COLUMN_VALUE疑似列
COLUMNS句を指定せずにXMLTable構造体を参照する場合、またはTABLEコレクション式を使用して表の型をネストしたスカラーを参照する場合、データベースは単一列を持つ仮想表を戻します。この疑似列の名前は、COLUMN_VALUEです。
XMLTableのコンテキストでは、戻り値のデータ型はXMLTypeです。たとえば、次の2つの文は同等で、どちらの出力も戻される列の名前としてCOLUMN_VALUEを示します。
SELECT *
FROM XMLTABLE('<a>123</a>');
COLUMN_VALUE
---------------------------------------
<a>123</a>
SELECT COLUMN_VALUE
FROM (XMLTable('<a>123</a>'));
COLUMN_VALUE
----------------------------------------
<a>123</a>
TABLEコレクション式のコンテキストでは、戻り値はコレクション要素のデータ型になります。次の文は、2つのレベルにネストした表を作成します。このコンテキストでのCOLUMN_VALUEの使用方法は、表の作成: マルチレベル・コレクションの例を参照してください。
CREATE TYPE phone AS TABLE OF NUMBER; / CREATE TYPE phone_list AS TABLE OF phone; /
次の文ではCOLUMN_VALUEを使用してphone型から選択します。
SELECT t.COLUMN_VALUE
FROM TABLE(phone(1,2,3)) t;
COLUMN_VALUE
------------
1
2
3
ネストした型では、SELECT構文のリストとTABLEコレクション式の両方でCOLUMN_VALUE疑似列を使用できます。
SELECT t.COLUMN_VALUE
FROM TABLE(phone_list(phone(1,2,3))) p, TABLE(p.COLUMN_VALUE) t;
COLUMN_VALUE
------------
1
2
3
次の例に示すように、キーワードCOLUMN_VALUEは、列または属性名を持たない内部のネストした表のスカラー値に対してOracle Databaseが生成する名前です。このコンテキストでは、COLUMN_VALUEは疑似列ではなく、実際の列の名前です。
CREATE TABLE my_customers (
cust_id NUMBER,
name VARCHAR2(25),
phone_numbers phone_list,
credit_limit NUMBER)
NESTED TABLE phone_numbers STORE AS outer_ntab
(NESTED TABLE COLUMN_VALUE STORE AS inner_ntab);関連項目:
-
このファンクションの詳細は、「XMLTABLE」を参照してください。
-
TABLEコレクション式の詳細は、「table_collection_expression::=」を参照してください。 -
ALTERTABLEの例は、「ネストした表: 例」を参照してください。 -
COLUMN_VALUE疑似列の値の照合導出ルールは、『Oracle Databaseグローバリゼーション・サポート・ガイド』の付録Cを参照してください。