用户操作
[即时聊天] [发私信] [加为好友]
cathysun118ID:CathySun118
9152次访问,排名12225,好友244人,关注者251人。
CathySun118的文章
原创 7 篇
翻译 0 篇
转载 19 篇
评论 5 篇
cathysun118的公告
最近评论
adyoutube:这篇文章还太全
yanghehong:应该不是广告,除非是csdn员工。
可能博主比较感性,还有文笔比较好:)

- 千里孤行
kingoflife:纯粹是广告贴嘛`
qqwmly:看着太累了
www.xyking.cn
kockoc4:编程王10TB代码库
http://code.kingofcoders.com

10TB代码Search engine
http://search.kingofcoders.com
文章分类
收藏
    相册
    书友会
    存档
    软件项目交易
    订阅我的博客
    XML聚合  FeedSky
    订阅到鲜果
    订阅到Google
    订阅到抓虾
    订阅到BlogLines
    订阅到Yahoo
    订阅到GouGou
    订阅到飞鸽
    订阅到Rojo
    订阅到newsgator
    订阅到netvibes

    转载 Oracle数组初探收藏

     | 旧一篇: 导出Oracle启动参数文件

    CREATE OR REPLACE PROCEDURE sample  
    is  
        TYPE R_REC IS RECORD(INT     NUMBER(6,2), CHR    VARCHAR2(100));
        TYPE T_REC IS TABLE OF R_REC INDEX BY BINARY_INTEGER;
      
        A_ZEI T_REC;    
        IX      NUMBER(10);    
    BEGIN  
        FOR IX IN 1..1000 LOOP   
            A_ZEI(IX).INT := IX;
            A_ZEI(IX).CHR := TO_CHAR(A_ZEI(IX).INT,'9,999,999.99');  
        END LOOP;  
       
    END;  



    CREATE OR REPLACE PROCEDURE P_EMP
    IS
         TYPE T_EMP IS TABLE OF EMP%ROWTYPE INDEX BY BINARY_INTEGER;
        
         A_EMP T_EMP;
         I        BINARY_INTEGER := 0;
    BEGIN
        
         FOR REC IN (SELECT EMPNO,ENAME FROM EMP) LOOP
            I := I + 1;
            A_EMP(I).EMPNO := REC.EMPNO;
            A_EMP(I).ENAME := REC.ENAME;
         END LOOP;
        
         FOR K IN 1..I LOOP
            DBMS_OUTPUT.PUT_LINE( A_EMP(K).EMPNO || '       ' || A_EMP(K).ENAME);
         END LOOP;
    END;
        

    集合:是具有相同定义的元素的聚合。Oracle有两种类型的集合:

    可变长数组(VARRAY):可以有任意数量的元素,但必须预先定义限制值。

    嵌套表:视为表中之表,可以有任意数量的元素,不需要预先定义限制值。


    在PL/SQL中是没有数组(Array)概念的。但是如果程序员想用Array的话,就得变通一下,用TYPE 和Table of Record来代替多维数组,一样挺好用的。
    emp_type 就好象一个table 中的一条record 一样,里面有id, name,gender等。emp_type_array 象个table, 里面含有一条条这样的record (emp_type),就象多维数组一样。

    --单维数组
    DECLARE
    TYPE emp_ssn_array IS TABLE OF NUMBER
    INDEX BY BINARY_INTEGER;

    best_employees emp_ssn_array;
    worst_employees emp_ssn_array;

    BEGIN
    best_employees(1) := '123456';
    best_employees(2) := '888888';

    worst_employees(1) := '222222';
    worst_employees(2) := '666666';

    FOR i IN 1..best_employees.count LOOP
    DBMS_OUTPUT.PUT_LINE('i='|| i || ', best_employees= ' ||best_employees(i)
    || ', worst_employees= ' ||worst_employees(i));
    END LOOP;

    END;

    --多维数组
    DECLARE

    TYPE emp_type IS RECORD
    ( emp_id employee_table.emp_id%TYPE,
    emp_name employee_table.emp_name%TYPE,
    emp_gender employee_table.emp_gender%TYPE );

    TYPE emp_type_array IS TABLE OF emp_type INDEX BY BINARY_INTEGER;

    emp_rec_array emp_type_array;
    emp_rec emp_type;

    BEGIN
    emp_rec.emp_id := 300000000;
    emp_rec.emp_name := 'Barbara';
    emp_rec.emp_gender := 'Female';

    emp_rec_array(1) := emp_rec;

    emp_rec.emp_id := 300000008;
    emp_rec.emp_name := 'Rick';
    emp_rec.emp_gender := 'Male';

    emp_rec_array(2) := emp_rec;

    FOR i IN 1..emp_rec_array.count LOOP
    DBMS_OUTPUT.PUT_LINE('i='||i
    ||', emp_id ='||emp_rec_array(i).emp_id
    ||', emp_name ='||emp_rec_array(i).emp_name
    ||', emp_gender = '||emp_rec_array(i).emp_gender);
    END LOOP;

    END;
    -------------- Result --------------
    i=1, emp_id =300000000, emp_name =Barbara, emp_gender = Female
    i=2, emp_id =300000008, emp_name =Rick, emp_gender = Male
    用下面语句声明数组类型
    type intarray is varry(30) of integer;

    用下面语句声明一个数组变量
    declare
    A intarray;用下面语句声明数组类型
    type intarray is varry(30) of integer;

    用下面语句声明一个数组变量
    declare
    A intarray;
    用下面语句声明数组类型
    type intarray is varry(30) of integer;

    用下面语句声明一个数组变量
    declare
    A intarray;

    发表于 @ 2008年07月15日 10:58:00|评论(loading...)|编辑|收藏

     | 旧一篇: 导出Oracle启动参数文件

    评论

    #adyoutube 发表于2008-11-17 00:29:26  IP: 125.85.132.*
    这篇文章还太全
    发表评论  


    当前用户设置只有注册用户才能发表评论。如果你没有登录,请点击登录
    Csdn Blog version 3.1a
    Copyright © cathysun118