计算自己类型中的行,例如类型为表或类型为对象

时间:2014-08-23 13:57:53

标签: oracle plsql nested-table sql-types

我自己的类型

CREATE OR REPLACE TYPE chain_t AS TABLE OF NUMBER(11);

在select语句中选择列作为此类型

select 
x.id, 
cast(multiset(select parent_id from table(x.parents)) as chain_t) as chain
from
xxxx x

如果 x.parents 有值,我有下一个结果,例如:

chain_t(22, 44)

或者如果没有

chain_t(null)

我如何计算链中的行? 例如,在第一个结果中,第二个结果中的2行结果为0行

1 个答案:

答案 0 :(得分:2)

使用CARDINALITY()功能。 Find out more

select id, chain, cardinality(chain) 
from (
   select 
           x.id, 
           cast(multiset(select parent_id from x) as chain_t) as chain
    from x
)
/

这是SQL Fiddle based on this simplified version of your posted code