广州明生医药有限公司


Oracle:PL/SQL 中如何使用Array

网络编程 Oracle:PL/SQL 中如何使用Array 06-22
因为在PL/SQL中并没有数组,这是我查资料找的范例和自己写的范例来解释如何在PL/SQL中使用数组。也许很多人已知道,不过就是让不知道的朋友们了解一下吧。

---------------------- 单维数组 ------------------------

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


注:在PL/SQL中是没有数组(Array)概念的。但是如果程序员想用Array的话,就得变通一下,用TYPE 和Table of Record来代替多维数组,一样挺好用的。

emp_type 就好象一个table 中的一条record 一样,里面有id, name,gender等。emp_type_array 象个table, 里面含有一条条这样的record (emp_type),就象多维数组一样。


编辑:广州明生医药有限公司

标签:数组,多维,范例,有一,就好