【发布时间】:2011-08-11 15:21:53
【问题描述】:
说,我有以下查询:
select 1 foo, 2 bar, 3 baz from dual;
基本上,这个查询总是返回一行。我需要从中创建一个关联数组,其中一种:
arr('foo') = 1;
arr('bar') = 2;
arr('baz') = 3;
我知道结果集只有一行。我既不知道列的数量也不知道列的名称。
有什么想法吗?
谢谢。
更新:
我的一个朋友发现了一个漂亮而优雅的涉及 XML 的解决方案:
SELECT
XMLTYPE(EXTRACT(VALUE(T), '/*') .GETSTRINGVAL()) .GETROOTELEMENT() NODE,
EXTRACTVALUE(COLUMN_VALUE, '/*') NODEVALUE
FROM
TABLE(XMLSEQUENCE(XMLTYPE((CURSOR
(
--this is the query that needs to be transformed
SELECT
*
FROM
some_table
WHERE some_table.id = 123
)
)) .EXTRACT('/ROWSET/ROW/*'))) T;
【问题讨论】:
标签: oracle select plsql associative-array