您的位置:首页 > 博客中心 > 数据库 >

ORACLE中RECORD、VARRAY、TABLE的使用详解

时间:2022-03-10 18:15

--组织机构结构表 CREATE TABLE SF_ORG ( ORG_ID INT NOT NULL, --组织机构主键ID ORG_NAME VARCHAR2(50),--组织机构名称 PARENT_ID INT--组织机构的父级 ) --一级组织机构 INSERT INTO SF_ORG(ORG_ID, ORG_NAME, PARENT_ID) VALUES(1, '一级部门1',0); --二级部门 INSERT INTO SF_ORG(ORG_ID, ORG_NAME, PARENT_ID) VALUES(2, '二级部门2',1); INSERT INTO SF_ORG(ORG_ID, ORG_NAME, PARENT_ID) VALUES(3, '二级部门3',1); INSERT INTO SF_ORG(ORG_ID, ORG_NAME, PARENT_ID) VALUES(4, '二级部门4',1);

DECLARE TYPE TYPE_ORG_RECORD IS RECORD( V_ORG_NAME SF_ORG.ORG_NAME%TYPE, V_PARENT_ID SF_ORG.PARENT_ID%TYPE); V_ORG_RECORD TYPE_ORG_RECORD; BEGIN SELECT ORG_NAME,PARENT_ID INTO V_ORG_RECORD FROM SF_ORG SO WHERE SO.ORG_ID=&ORG_ID; DBMS_OUTPUT.PUT_LINE('部门名称:' || V_ORG_RECORD.V_ORG_NAME); DBMS_OUTPUT.PUT_LINE('上级部门编码:' || TO_CHAR(V_ORG_RECORD.V_PARENT_ID)); END;

DECLARE TYPE ORG_VARRAY_TYPE IS VARRAY(5) OF VARCHAR2(25); V_ORG_VARRAY ORG_VARRAY_TYPE; BEGIN V_ORG_VARRAY := ORG_VARRAY_TYPE('1','2','3','4','5'); DBMS_OUTPUT.PUT_LINE('输出1:' || V_ORG_VARRAY(1) || '、'|| V_ORG_VARRAY(2) || '、'|| V_ORG_VARRAY(3) || '、'|| V_ORG_VARRAY(4)); DBMS_OUTPUT.PUT_LINE('输出2:' || V_ORG_VARRAY(5)); V_ORG_VARRAY(5) := '5001'; DBMS_OUTPUT.PUT_LINE('输出3:' || V_ORG_VARRAY(5)); END;

DECLARE TYPE ORG_TABLE_TYPE IS TABLE OF VARCHAR2(25) INDEX BY BINARY_INTEGER; V_ORG_TABLE ORG_TABLE_TYPE; BEGIN V_ORG_TABLE(1) := '1'; V_ORG_TABLE(2) := '2'; V_ORG_TABLE(3) := '3'; V_ORG_TABLE(4) := '4'; V_ORG_TABLE(5) := '5'; DBMS_OUTPUT.PUT_LINE('输出1:' || V_ORG_TABLE(1) || '、'|| V_ORG_TABLE(2) || '、'|| V_ORG_TABLE(3) || '、'|| V_ORG_TABLE(4)); DBMS_OUTPUT.PUT_LINE('输出2:' || V_ORG_TABLE(5)); END;

DECLARE TYPE T_TYPE IS TABLE OF SF_ORG%ROWTYPE; V_TYPE T_TYPE; BEGIN SELECT ORG_ID,ORG_NAME,PARENT_ID BULK COLLECT INTO V_TYPE FROM SF_ORG WHERE SF_ORG.ORG_ID <= 3; FOR V_INDEX IN V_TYPE.FIRST .. V_TYPE.LAST LOOP DBMS_OUTPUT.PUT_LINE(V_TYPE(V_INDEX).C1 || ' ' || V_TYPE(V_INDEX).C2); END LOOP; END;

DECLARE TYPE TEST_EMP IS RECORD ( C1 SF_ORG.ORG_NAME%TYPE, C2 SF_ORG.PARENT_ID%TYPE ); TYPE T_TYPE IS TABLE OF TEST_EMP; V_TYPE T_TYPE; BEGIN SELECT ORG_NAME, PARENT_ID BULK COLLECT INTO V_TYPE FROM SF_ORG WHERE SF_ORG.ORG_ID <= 3; FOR V_INDEX IN V_TYPE.FIRST .. V_TYPE.LAST LOOP DBMS_OUTPUT.PUT_LINE(V_TYPE(V_INDEX).C1 || ' ' || V_TYPE(V_INDEX).C2); END LOOP; END;

3     问题

VARRAY和TABLE集合不能直接对其进行查询。只能对其进行遍历。

ORACLE中RECORD、VARRAY、TABLE的使用详解,布布扣,bubuko.com

热门排行

今日推荐

热门手游