수색…


대량 데이터 처리

로컬 콜렉션은 select 문에서 허용되지 않습니다. 따라서 첫 번째 단계는 스키마 수준 컬렉션을 만드는 것입니다. 콜렉션이 스키마 레벨이 아니고 SELECT 문에서 사용되는 경우 "PLS-00642 : SQL 문에서 허용되지 않는 로컬 콜렉션 유형"

CREATE OR REPLACE TYPE table1_t IS OBJECT (
a_1 INTEGER,
a_2 VARCHAR2(10)
);

- 데이터베이스에 공개적으로 사용할 수 있도록 컬렉션에 대한 사용 권한 부여

     GRANT EXECUTE ON table1_t TO PUBLIC;
     CREATE OR REPLACE TYPE table1_tbl_typ IS TABLE OF table1_t;
     GRANT EXECUTE ON table1_tbl_typ TO PUBLIC;

- 테이블에서 컬렉션으로 데이터를 가져온 다음 컬렉션을 반복하고 데이터를 인쇄합니다.

    DECLARE
     table1_tbl table1_tbl_typ;
    BEGIN
     table1_tbl := table1_tbl_typ();
      SELECT table1_t(a_1,a_2)  
      BULK COLLECT INTO table1_tbl 
      FROM table1 WHERE ROWNUM<10;

     FOR rec IN (SELECT a_1 FROM TABLE(table1_tbl))--table(table1_tbl) won't give error)
     LOOP
       dbms_output.put_line('a_1'||rec.a_1);
       dbms_output.put_line('a_2'||rec.a_2);
     END LOOP;
    END;
/


Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow