oracle 数组定义
?http://blog.csdn.net/lizhenhuatop/article/details/2854731
集合:是具有相同定義的元素的聚合。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?? || &nb
sp; ',?? 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;
?
一個例子
??stmt varchar2(200);
??dept_no_array dbms_sql.Number_Table;
??c number;
??dummy number;
begin
??dept_no_array(1) := 10; dept_no_array(2) := 20;
??dept_no_array(3) := 30; dept_no_array(4) := 40;
??dept_no_array(5) := 30; dept_no_array(6) := 40;
??stmt := 'delete from emp where deptno = :dept_array';
??c := dbms_sql.open_cursor;
??dbms_sql.parse(c, stmt, dbms_sql.native);
??dbms_sql.bind_array(c, ':dept_array', dept_no_array, 1, 4);
??dummy := dbms_sql.execute(c);
??dbms_sql.close_cursor(c);
??exception when others then
? ? if dbms_sql.is_open(c) then
? ?? ?dbms_sql.close_cursor(c);
? ? end if;
? ? raise;
end;
/
?
與50位技術專家面對面20年技術見證,附贈技術全景圖總結
以上是生活随笔為你收集整理的oracle 数组定义的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: HASHSET原理
- 下一篇: oracle cusor 定义