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::=」を参照してください。 -
ALTER
TABLE
の例は、「ネストした表: 例」を参照してください。 -
COLUMN_VALUE
疑似列の値の照合導出ルールは、『Oracle Databaseグローバリゼーション・サポート・ガイド』の付録Cを参照してください。