本文介紹Varray類型的定義和使用方法。
背景說明
Oracle中Varray可以嵌套定義,即Varray定義中可以引用已經定義的Varry,例如:
declare
TYPE VAR_TYP IS VARRAY(20) OF NUMBER;
TYPE VAR_TYP_2 IS VARRAY(10) OF VAR_TYP;
begin
return '';
END pkg_subtype;
在PolarDB O引擎中,支持Varray類型的定義,但是不支持嵌套定義的語法,需要做簡單改造。
解決方案
PolarDB O引擎中Varry的定義方法:
TYPE varraytype IS { VARRAY | VARYING ARRAY }(maxsize)
OF { datatype | objtype };
說明 OF后的具體類型只支持datatype與objtype,不支持varraytype。
示例
- 對于嵌套定義的Varry做改造:
declare TYPE VAR_TYP IS VARRAY(20) OF NUMBER; TYPE VAR_TYP_2 IS VARRAY(10) OF NUMBER; begin return ''; END pkg_subtype;
DECLARE TYPE dname_varray_typ IS VARRAY(4) OF VARCHAR2(14); dname_varray dname_varray_typ; CURSOR dept_cur IS SELECT dname FROM dept ORDER BY dname; i INTEGER := 0; BEGIN dname_varray := dname_varray_typ(NULL, NULL, NULL, NULL); FOR r_dept IN dept_cur LOOP i := i + 1; dname_varray(i) := r_dept.dname; END LOOP; DBMS_OUTPUT.PUT_LINE('DNAME'); DBMS_OUTPUT.PUT_LINE('----------'); FOR j IN 1..i LOOP DBMS_OUTPUT.PUT_LINE(dname_varray(j)); END LOOP; END;