您的位置:首页 > 数据库 > Oracle

[Orace] 第17章 集合-索引表

2016-09-24 14:02 120 查看
索引表类似于程序语言中的数组,可以保存多个数据,并且通过下标来访问每一个数据,但是在 Oracle 中可用来定义索引表下标的数据类型可以是整数也可以是字符串。

但是在Oracle中定义的索引表与程序中的数组还有以下的区别:

索引表不需要进行初始化,而已直接为指定索引赋值,开辟的索引表的索引不一定必须连续。

索引表不仅可以使用数字作为索引下标,也可以利用字符串表示索引下标,使用数字作为索引下标时也可以设置为负数。

定义索引表

TYPE TYPE_NAME IS TABLE OF DATA_TYPE [NOT NULL]

INDEX BY [PLS_INTEGER | BINARY_INTEGER | VARCHAR2(LENGTH)];

DECLARE
TYPE INFO_INDEX IS TABLE OF VARCHAR2(20)
INDEX BY PLS_INTEGER;

V_INFO INFO_INDEX;
BEGIN
V_INFO(1)  := 'JAVA';
V_INFO(10) := 'PL/SQL';

IF V_INFO.EXISTS(1) THEN
DBMS_OUTPUT.PUT_LINE(V_INFO(1));
ELSE
DBMS_OUTPUT.PUT_LINE('NOT EXISTS');
END IF;

IF V_INFO.EXISTS(30) THEN
DBMS_OUTPUT.PUT_LINE(V_INFO(30));
ELSE
DBMS_OUTPUT.PUT_LINE('NOT EXISTS');
END IF;

EXCEPTION
WHEN OTHERS THEN
DBMS_OUTPUT('WRONG:'|| SQLCODE || SQLERM);
END;


DECLARE
TYPE DEPT_INDEX IS TABLE OF DEPT%ROWTYPE
INDEX BY PLS_INTEGER;

V_DEPT DEPT_INDEX;
BEGIN
V_DEPT(0).DEPT   := 80;
V_DEPT(0).DNAME  := 'MLDN';
V_DEPT(0).LOC    := 'PEKING';

IF V_DEPT.EXISTS(0) THEN
DBMS_OUTPUT.PUT_LINE();
END IF;
EXCEPTION
WHEN OTHERS THEN
DBMS_OUTPUT('WRONG:'|| SQLCODE || SQLERM);
END;


DECLARE
TYPE DEPT_TYPE IS RECORD(
DEPTNO    DEPT.DEPTNO%TYPE,
DNAME     DEPT.DNAME%TYPE,
LOC       DEPT.LOC%TYPE
);

TYPE DEPT_INDEX IS TABLE OF DEPT_TYPE
INDEX BY PLS_INTEGER;

V_DEPT DEPT_INDEX;
BEGIN
V_DEPT(0).DEPT   := 80;
V_DEPT(0).DNAME  := 'MLDN';
V_DEPT(0).LOC    := 'PEKING';

IF V_DEPT.EXISTS(0) THEN
DBMS_OUTPUT.PUT_LINE();
END IF;
EXCEPTION
WHEN OTHERS THEN
DBMS_OUTPUT('WRONG:'|| SQLCODE || SQLERM);
END;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  oracle
相关文章推荐