说,我有以下查询:转化单行结果集到一个关联数组
select 1 foo, 2 bar, 3 baz from dual;
基本上,此查询总是返回我一行。我需要从创建关联数组,这样的一个:
arr('foo') = 1;
arr('bar') = 2;
arr('baz') = 3;
我知道结果集只有一排。我不知道列数量和列名称。
任何想法?
谢谢。
UPD:
我的一个朋友找到了一个漂亮和优雅,涉及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;