【发布时间】:2013-09-19 23:15:26
【问题描述】:
我正在寻找一个嵌套表,以便我可以使用查询来重新排序值。由于没有键名,我想知道列名是什么?
我知道这不是正确的语法,但它说明了我想要实现的目标。
CREATE OR REPLACE TYPE a_nested_table AS TABLE OF VARCHAR2(20);
CREATE OR REPLACE FUNCTION my_func RETURN VARCHAR2 IS
output VARCHAR2;
list a_nested_table := a_nested_table('foo', 'bar');
BEGIN
FOR current_record IN(
SELECT column_name INTO bar
FROM TABLE(CAST(list AS a_nested_table))
ORDER BY UPPER(column_name) ASC
) LOOP
output := output || current_record.column_name
END LOOP;
return output;
END my_func;
【问题讨论】:
-
带有
column_value的 order by 子句应该可以解决问题,你试过了吗? -
你总是可以使用位置符号,例如ORDER BY 1. 如果对我在博客中对嵌套表进行排序有帮助:oraclefrontovik.com/2013/08/sorting-an-oracle-nested-table
-
@Sebas 是的,column_value 有效。 @IanCarpenter 我用过
FOR current_record IN(/* select statement */) LOOP;性能方面,这与您的SELECT CAST(MULTISET(/* select statement*/)) INTO nested_table FROM DUAL方法有何不同?
标签: oracle collections plsql oracle10g