プライマリ・コンテンツに移動
Oracle® Database SQL言語リファレンス
11gリリース2 (11.2)
B56299-08
  目次へ移動
目次
索引へ移動
索引

前
 
次
 

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);

関連項目: