PL/SQL 索引表

定义索引表
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;
/

猜你喜欢

转载自blog.csdn.net/gameloftnet/article/details/84260253
今日推荐