wcm*_*sen 1 sql oracle plsql oracle11g
如何线性化嵌套表,嵌套表本身也包含嵌套表(注意:内部表可能具有不同的大小).假设我有以下类型声明:
CREATE OR REPLACE TYPE VECTOR
IS
TABLE OF NUMBER;
CREATE OR REPLACE TYPE TABLE_OF_VECTOR
IS
TABLE OF VECTOR;
Run Code Online (Sandbox Code Playgroud)
以下PL/SQL片段:
DECLARE
number_table TABLE_OF_VECTOR;
result_vector VECTOR;
BEGIN
number_table := table_of_vector(vector(23, 4, 2222, 22222222),
vector(2, 1, 766, 2), vector(2, 1, 5));
END;
Run Code Online (Sandbox Code Playgroud)
有没有办法我可以线性化number_table并将其在result_vector中的所有值存储为一个连续的数字列表?我想最终得到:
result_vector == vector(23, 4, 2222, 22222222, 2, 1, 766, 2, 2, 1, 5)
Run Code Online (Sandbox Code Playgroud)
它确实如此,但它并不漂亮.
select cast(collect(b.column_value) as vector)
from table(table_of_vector(
vector(23, 4, 2222, 22222222),
vector(2, 1, 766, 2),
vector(2, 1, 5))) a,
table(a.column_value) b;
Run Code Online (Sandbox Code Playgroud)
因此,表(...)部分将table_of_vector视为具有名称"COLUMN_VALUE"的列的"常规"表.然后我们将其视为另一个我称之为B的表.
SELECTed表达式获取组成'A'表中'B'表的所有单个数字,并将它们聚合到一个集合中(使用COLLECT).最后,我明确地将集合转换为VECTOR类型.
| 归档时间: |
|
| 查看次数: |
543 次 |
| 最近记录: |