我现在在前方的检索经过一系列处理以后,有一堆值放在一个Oracle的类似动态数组里面,这个类型的定义如下 CREATE TYPE DEVUSR00.TBL_NKRKKEDD_U AS TABLE OF XXX 这个TBL_NKRKKEDD_U类型当前有一个实例,里面具有多条记录,我需要对这个实例按照某种规则进行排序有什么办法呢?如果要建立一个临时表的话,由于这个TYPE中变量很大,也没什么必要的感觉
SQL> create type my_record AS OBJECT (col1 number
2 ,col2 number
3 ,col3 number
4 );
5 /
Type created.
SQL> create type my_table as table of my_record;
2 /
Type created.
SQL> DECLARE
2 v_tab my_table := my_table();
3 v_sort my_table := my_table();
4 BEGIN
5 FOR i IN 1..1000
6 LOOP
7 v_tab.extend;
8 v_tab(v_tab.last) := my_record( TRUNC(dbms_random.value(1,1000))
9 , TRUNC(dbms_random.value(1,1000))
10 , 1000-i
11 );
12 END LOOP;
13 FOR record IN ( SELECT nt.col1 x
14 , nt.col2 y
15 , nt.col3 z
16 FROM TABLE(CAST(v_tab AS my_Table)) nt
17 ORDER BY nt.col1 )
18 LOOP
19 IF MOD(record.x,25)=0 THEN
20 Dbms_output.put_line(record.x);
21 END IF;
22 END LOOP;
23 END;
24 /