ORACLE中RECORD、VARRAY、TABLE的使用详解(二)

2015-07-24 11:18:00 · 作者: · 浏览: 10
E('输出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;
2.4.2 存储多列多行和ROWTYPE结合使用

采用bulkcollect可以将查询结果一次性地加载到collections中。而不是通过cursor一条一条地处理。

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;?
2.4.3 存储多列多行和RECORD结合使用

采用bulkcollect可以将查询结果一次性地加载到collections中。而不是通过cursor一条一条地处理。

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集合不能直接对其进行查询。只能对其进行遍历。