PL/SQL 索引表
阿新 • • 發佈:2018-11-23
定義索引表
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; /