原文地址:http://docs.oracle.com/cd/B19306_01/server.102/b14200/pseudocolumns004.htm
如果引用不带COLUMNS子句的XMLTABLE构造函数,或者使用TABLE函数引用一个标量嵌套表类型,数据库返回一个具有单一列的虚表。这个伪列的名称就是COLUMN_VALUE。
对于XMLTABLE,返回值的类型为XMLType。例如,以下两个语句是等价的,输出都表明了返回的列名为COLUMN_VALUE:
SELECT * FROM XMLTABLE('123');
COLUMN_VALUE
---------------------------------------
123
SELECT COLUMN_VALUE FROM (XMLTable('123'));
COLUMN_VALUE
----------------------------------------
123
对于TABLE函数,返回值的类型为集合元素。以下语句创建了一个两层的嵌套表,展示了这种情况下COLUMN_VALUE的用法:
以下语句使用COLUMN_VALUE查询phone类型:
SELECT t.COLUMN_VALUE from table(phone(1,2,3)) t;
COLUMN_VALUE
------------
1
2
3
在嵌套类型中,可以在选择列表以及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也表示没有列名或者属性名的内部嵌套表的标量值的名称,如下例所示。此时,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);
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/24945919/viewspace-747914/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/24945919/viewspace-747914/