数组基础
来源:互联网 发布:沈阳seo 公司 编辑:程序博客网 时间:2024/05/16 12:49
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 emp.empno%type,
emp_name emp.ename%type,
emp_job emp.job%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 := 3000;
emp_rec.emp_name := 'Barbara';
emp_rec.emp_job := 'sales';
emp_rec_array(1) := emp_rec;
emp_rec.emp_id := 3008;
emp_rec.emp_name := 'Rick';
emp_rec.emp_job := 'engineer';
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_job = ' || emp_rec_array(i).emp_job);
end loop;
end;
DECLARE
TYPE CourseList IS TABLE OF VARCHAR2(10);
courses CourseList;
BEGIN
-- 初始化数组元素,大小为3
courses := CourseList( 'Biol 4412 ', 'Psyc 3112 ', 'Anth 3001 ');
-- 为数组增加一个元素,数组大小为4,末尾的元素为NULL
courses.EXTEND; -- append one null element
-- 为增加的元素赋值,如果没用EXTEND,这里会出错
courses(4) := 'Engl 2005 ';
for idx in 1..courses.count
loop
dbms_output.put_line('the array list is: '||courses(idx));
end loop;
end;
- 数组基础
- 数组基础
- 数组基础
- 数组基础
- 数组基础
- 数组基础
- 数组基础
- 数组基础
- 数组基础
- 数组基础
- 数组基础
- 数组基础
- 数组基础
- 数组基础
- 数组基础
- 数组基础
- 数组基础
- javaScript--数组基础
- 【转】Struts2的注解功能
- 通过单臂路由实现两个vlan的互访
- 搜索引擎大换血,SEO的“星晴”也在大换血
- Eclipse常用快捷键大全(三)
- poj 2029 && zoj 1716 Get Many Persimmon Trees
- 数组基础
- Eclipse常用快捷键大全(四)
- 暴风影音2011 去广告补丁V1.1
- Java 7 新特性 -- 实战篇
- C# .Net 学习积累《五》
- 【转】Spring 注解
- 关于Android隐式启动Activity
- Easy RadControl 之 RadTabControl(Silverlight)
- ☆ Visual Studio 2008 每日小窍门 【持续发布中~】 Tips:083