ITPUB??ì3
新一届的微软MVP评选已经开始,欢迎各位推荐!
ITPUB论坛 » Oracle开发 » 问题: 使用IS TABLE OF建立的数组如何排序?

标题: 问题: 使用IS TABLE OF建立的数组如何排序?
离线 Arraykk_bobo
初级会员


精华贴数 0
个人空间 0
技术积分 12 (77025)
社区积分 0 (546755)
注册日期 2005-8-4
论坛徽章:0
      
      

发表于 2005-8-4 16:26 
问题: 使用IS TABLE OF建立的数组如何排序?


这是我的代码:
TYPE byq_type IS RECORD
( I2 NUMBER,
Ts NUMBER);
TYPE byq_type_array IS TABLE OF
byq_type INDEX BY BINARY_INTEGER;

我建立的byq_type_array 中假如有下面数据:
I2 Ts
-----------------
I1,10
I2,5
I3,20
I4,15

如何将上面的数据变成可以按Ts排序呢?
I2,5
I1,10
I4,15
I3,20



谢谢。


只看该作者    顶部
离线 kk_bobo
初级会员


精华贴数 0
个人空间 0
技术积分 12 (77025)
社区积分 0 (546755)
注册日期 2005-8-4
论坛徽章:0
      
      

发表于 2005-8-4 17:00 
大家帮帮忙啊,我一直在线等。。。。。。。。。。。


只看该作者    顶部
离线 zhpsam
努力学习!!!


来自 陕西西安
精华贴数 0
个人空间 0
技术积分 2979 (510)
社区积分 13 (9344)
注册日期 2004-8-15
论坛徽章:5
会员2007贡献徽章铁扇公主授权会员生肖徽章2007版:鸡ITPUB新首页上线纪念徽章 
      

发表于 2005-8-4 18:02 
我也想知道!!!!!


__________________
只看该作者    顶部
离线 kk_bobo
初级会员


精华贴数 0
个人空间 0
技术积分 12 (77025)
社区积分 0 (546755)
注册日期 2005-8-4
论坛徽章:0
      
      

发表于 2005-8-5 11:30 
我现在只能是建立个临时表,把数据insert 到里面了,再select order by ts,有没有高手有别的好方法啊!


只看该作者    顶部
离线 xzh2000
仙人抚我须 结发授长生



精华贴数 13
个人空间 0
技术积分 46440 (14)
社区积分 5155 (284)
注册日期 2002-7-17
论坛徽章:30
现任管理团队成员ITPUB元老授权会员生肖徽章2007版:狗2008北京奥运纪念徽章:柔道2008北京奥运纪念徽章:帆船
生肖徽章2007版:虎ITPUB新首页上线纪念徽章数据库板块每日发贴之星数据库板块每日发贴之星数据库板块每日发贴之星数据库板块每日发贴之星

发表于 2008-6-25 11:13 
自己写个排序算法吧,在数据写入record时,就先排好队...


__________________
过目即忘  插柳成荫
只看该作者    顶部
在线/呼叫 jvkojvko
小马哥


精华贴数 1
个人空间 0
技术积分 5659 (233)
社区积分 45795 (16)
注册日期 2007-9-10
论坛徽章:17
      
      

发表于 2008-6-25 11:30 
没用过,帮顶了,


__________________
马无夜草不肥,人无外财不富。

-------------------------------
长期高价出售奥运章
只看该作者    顶部
离线 atgc
高级会员


精华贴数 1
个人空间 0
技术积分 7947 (157)
社区积分 168 (2591)
注册日期 2004-7-22
论坛徽章:35
生肖徽章2007版:龙2008北京奥运纪念徽章:射箭2008北京奥运纪念徽章:蹦床2008北京奥运纪念徽章:跳水2008北京奥运纪念徽章:举重2008北京奥运纪念徽章:排球
2008北京奥运纪念徽章:花样游泳2008北京奥运纪念徽章:垒球2008北京奥运纪念徽章:手球2008北京奥运纪念徽章:帆船2008北京奥运纪念徽章:羽毛球生肖徽章2007版:鼠

发表于 2008-6-25 12:51 
I2是number型的,怎么会有字母呢?


__________________
只看该作者    顶部
离线 DragonBill
武陵愚生


精华贴数 1
个人空间 10
技术积分 3260 (456)
社区积分 391 (1622)
注册日期 2006-12-18
论坛徽章:13
2008北京奥运纪念徽章:击剑生肖徽章2007版:虎    
      

发表于 2008-6-25 13:31 
贴子好老


只看该作者    顶部
离线 DragonBill
武陵愚生


精华贴数 1
个人空间 10
技术积分 3260 (456)
社区积分 391 (1622)
注册日期 2006-12-18
论坛徽章:13
2008北京奥运纪念徽章:击剑生肖徽章2007版:虎    
      

发表于 2008-6-25 13:41 
方法一:
CREATE OR REPLACE TYPE TYP_ARR AS TABLE OF VARCHAR2(10);
/

DECLARE
   OBJ_ARR        TYP_ARR := TYP_ARR('B','A','F','D');
BEGIN

   DBMS_OUTPUT.PUT_LINE('======Before Sort====' );
   FOR I IN OBJ_ARR.FIRST..OBJ_ARR.LAST
   LOOP
      DBMS_OUTPUT.PUT_LINE(OBJ_ARR(I));
   END LOOP;

   SELECT CAST(MULTISET(SELECT * FROM TABLE(OBJ_ARR) ORDER BY 1) AS TYP_ARR)
   INTO   OBJ_ARR
   FROM   DUAL;

   DBMS_OUTPUT.PUT_LINE('======After Sort====' );
   FOR I IN OBJ_ARR.FIRST..OBJ_ARR.LAST
   LOOP
      DBMS_OUTPUT.PUT_LINE(OBJ_ARR(I));
   END LOOP;
END;
/


只看该作者    顶部
离线 DragonBill
武陵愚生


精华贴数 1
个人空间 10
技术积分 3260 (456)
社区积分 391 (1622)
注册日期 2006-12-18
论坛徽章:13
2008北京奥运纪念徽章:击剑生肖徽章2007版:虎    
      

发表于 2008-6-25 13:43 
方法二:
DECLARE
   TYPE byq_type IS RECORD( I2 INT,
                           Ts VARCHAR2(5));
   TYPE byq_type_array IS TABLE OF byq_type;
   abc1  byq_type_array := byq_type_array();
   abc3  byq_type;
BEGIN
   abc1.extend(4);

   abc3.i2 := 3;
   abc3.Ts := 'B';
   abc1(1) := abc3;

   abc3.i2 := 9;
   abc3.Ts := 'A';
   abc1(2) := abc3;

   abc3.i2 := 6;
   abc3.Ts := 'D';
   abc1(3) := abc3;

   abc3.i2 := 5;
   abc3.Ts := 'E';
   abc1(4) := abc3;

   DBMS_OUTPUT.PUT_LINE('======Before Sort====' );
   FOR I IN abc1.FIRST..abc1.LAST LOOP
      DBMS_OUTPUT.PUT_LINE(abc1(I).I2 || '=====' || abc1(I).Ts);
   END LOOP;

   DECLARE
      TYPE byq_type_array IS TABLE OF byq_type INDEX BY BINARY_INTEGER;
      abc2 byq_type_array;
      idx  INTEGER;
   BEGIN
      idx := abc1.FIRST;
      LOOP
         abc2(abc1(idx).i2) := abc1(idx);
         idx := abc1.NEXT(idx);
         EXIT WHEN idx IS NULL;
      END LOOP;

      abc1.DELETE;

      idx := abc2.FIRST;
      LOOP
         abc1.EXTEND;
         abc1(abc1.LAST) := abc2(idx);
         idx := abc2.NEXT(idx);
         EXIT WHEN idx IS NULL;
      END LOOP;
   END;

   DBMS_OUTPUT.PUT_LINE('======After Sort====' );
   FOR I IN abc1.FIRST..abc1.LAST LOOP
      DBMS_OUTPUT.PUT_LINE(abc1(I).I2 || '=====' || abc1(I).Ts);
   END LOOP;
END;
/


只看该作者    顶部
 
    

相关内容


CopyRight 1999-2006 itpub.net All Right Reserved.
北京皓辰广域网络信息技术有限公司. 版权所有
E-mail:Webmaster@itpub.net
京ICP证:010037号 联系我们 法律顾问