【问题标题】:Sorting a collection对集合进行排序
【发布时间】:2015-12-29 10:33:54
【问题描述】:
我想根据 DESC 日期顺序对集合类型进行排序并填充新集合。我该怎么办?
TYPE xyz IS RECORD(
Item aa.Item%Type,
t_date date,
Code aa.Code%Type,
Qty aa.Units%Type,
Cost aa.Total_Cost%TYPE );
TYPE uxyz IS TABLE OF xyz;
l_uxyz uxyz;
【问题讨论】:
标签:
sorting
collections
plsql
record
【解决方案1】:
只是为了说明一个非常小的例子,我在下面提到了一个
sn-p。希望对您有所帮助。
-- SQL Table type creation
CREATE OR REPLACE TYPE NUMBER_NTT
IS
TABLE OF NUMBER;
-- Anonomous block to illustrate your question
SET serveroutput ON;
DECLARE
TYPE lv_num_tab
IS
TABLE OF NUMBER;
lv_num1 lv_num_tab:=lv_num_tab();
lv_num2 NUMBER_NTT;
BEGIN
lv_num2:=NUMBER_NTT(1,3,4,7,2,6);
SELECT COLUMN_VALUE BULK COLLECT
INTO lv_num1
FROM TABLE(lv_num2)
ORDER BY 1 DESC;
dbms_output.put_line('With desc order');
FOR i IN lv_num1.FIRST..lv_num1.LAST
LOOP
dbms_output.put_line(lv_num1(i));
END LOOP;
SELECT COLUMN_VALUE BULK COLLECT INTO lv_num1 FROM TABLE(lv_num2);
dbms_output.put_line('Without desc order');
FOR i IN lv_num1.FIRST..lv_num1.LAST
LOOP
dbms_output.put_line(lv_num1(i));
END LOOP;
END;
-------------------------------------OUTPUT-----------------------------------------
anonymous block completed
With desc order
7
6
4
3
2
1
Without desc order
1
3
4
7
2
6
------------------------------------------------------------------------------------