1. 程式人生 > >PL/SQL 索引表

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;
/