定义索引表
TYPE 类型名称 IS TABLE OF 数据类型 [NOT NULL]
INDEX BY [PLS_INTEGER | BINARY_INTEGER | VARCHAR2(长度)];
SQL> DECLARE
2 TYPE info_index is TABLE OF VARCHAR(20)
3 INDEX BY PLS_INTEGER;
4 v_info info_index;
5 BEGIN
6 v_info(1):='Wind';
7 v_info(10):='Rian';
8 DBMS_OUTPUT.put_line(v_info(1));
9 DBMS_OUTPUT.put_line(v_info(10));
10 END;
11 /
Wind
Rian
PL/SQL 过程已成功完成。
由于索引表中的索引号是非固定的,如果要使用某一指定索引位置数据是,建议使用 索引表对象,EXISTS()
进行验证
DECLARE
TYPE info_index is TABLE OF VARCHAR(20)
INDEX BY PLS_INTEGER;
v_info info_index;
BEGIN
v_info(1):='Wind';
v_info(10):='Rian';
IF v_info.EXISTS(10) THEN
DBMS_OUTPUT.put_line(v_info(1));
END IF;
IF v_info.EXISTS(30) THEN
DBMS_OUTPUT.put_line(v_info(30));
ELSE
DBMS_OUTPUT.put_line('索引号为30的数据不存在');
END IF;
END;
/
定义ROWTYPE 型的索引表
DECLARE
TYPE dept_index is TABLE OF dept%ROWTYPE
INDEX BY PLS_INTEGER;
v_dept dept_index;
BEGIN
v_dept(0).deptno:=80;
v_dept(0).dname:='Wind';
v_dept(0).loc:='RIAN';
if v_dept.EXISTS(0) THEN
DBMS_OUTPUT.put_line('部门编号:'||v_dept(0).deptno||',名称:'||v_dept(0).dname||
',位置:'||v_dept(0).loc);
END IF;
END;
/