"일꾼이 일을 잘하려면 먼저 도구를 갈고 닦아야 한다." - 공자, 『논어』.
첫 장 > 프로그램 작성 > PL/SQL의 대량 수집

PL/SQL의 대량 수집

2024-11-08에 게시됨
검색:500

BULK COLLECT in PL/SQL

틀림없이! 다음은 PL/SQL에서 BULK COLLECT 사용을 보여주는 간단한 예입니다.

대량 수집이란 무엇입니까?

BULK COLLECT는 단일 작업으로 SQL 쿼리의 여러 행을 PL/SQL 컬렉션으로 가져오는 데 사용되는 방법입니다. 이는 SQL과 PL/SQL 엔진 간의 컨텍스트 전환을 줄여 특히 대규모 데이터 세트의 경우 프로세스를 더욱 효율적으로 만듭니다.

대량 수집의 간단한 예

이 예에서는 테이블을 만들고 여기에 일부 데이터를 삽입한 다음 BULK COLLECT를 사용하여 데이터를 컬렉션으로 가져옵니다.

1단계: 샘플 테이블 생성

먼저 직원이라는 샘플 테이블을 만듭니다.

CREATE TABLE 직원(
직원 ID NUMBER,
직원_이름 VARCHAR2(50)
);

INSERT INTO 직원(employee_id, 직원_이름) VALUES (1, 'John Doe');
INSERT INTO 직원(employee_id, Employee_name) VALUES (2, 'Jane Smith');
INSERT INTO 직원(employee_id, Employee_name) VALUES (3, 'Sam Wilson');
INSERT INTO 직원 (employee_id, Employee_name) VALUES (4, 'Sara Brown');
INSERT INTO 직원 (employee_id, Employee_name) VALUES (5, 'Mike Johnson');

저지르다;

2단계: 대량 수집을 사용한 PL/SQL 블록

이제 BULK COLLECT를 사용하여 모든 직원 이름을 컬렉션으로 가져옵니다.

선언하다
TYPE emp_name_table은 VARCHAR2(50)의 테이블입니다. -- 컬렉션 유형 정의
emp_names emp_name_table; -- 해당 유형의 변수를 선언합니다
시작하다
-- 직원 이름을 컬렉션으로 대량 수집
SELECT 직원 이름 BULK COLLECT INTO emp_names
직원으로부터;

-- Print the names
FOR i IN 1..emp_names.COUNT LOOP
    DBMS_OUTPUT.PUT_LINE('Employee Name: ' || emp_names(i));
END LOOP;

끝;
/

설명

  1. 컬렉션 유형 정의: 직원 이름을 보관하기 위해 emp_name_table이라는 컬렉션 유형을 정의합니다.

  2. BULK COLLECT INTO: SELECT 문은 직원 테이블에서 모든 Employee_name 값을 가져와 한 번에 emp_names 컬렉션에 수집합니다.

  3. 결과 표시를 위한 루프: COUNT를 사용하여 컬렉션을 반복하여 총 항목 수를 얻고 각 직원 이름을 인쇄합니다.

산출

위의 PL/SQL 블록을 실행하면 다음과 같은 출력이 표시됩니다.

사원 이름: John Doe
직원 이름: Jane Smith
직원 이름: 샘 윌슨
직원 이름: Sara Brown
직원 이름: Mike Johnson

핵심사항

효율성: BULK COLLECT를 사용하면 SQL과 PL/SQL 간의 컨텍스트 전환 수가 줄어들어 대규모 데이터 세트를 처리하는 데 더 효율적이 됩니다.

대규모 데이터 처리: 개별 행 처리의 오버헤드를 최소화하므로 대규모 데이터 세트로 작업할 때 특히 유용합니다.

이 예에서는 여러 행을 PL/SQL 컬렉션으로 효율적으로 수집하기 위한 BULK COLLECT의 기본 사용을 보여줍니다.

릴리스 선언문 이 글은 https://dev.to/mrcaption49/bulk-collect-in-plsql-34hc?1에서 복제됩니다.1 침해 내용이 있는 경우, [email protected]으로 연락하여 삭제하시기 바랍니다.
최신 튜토리얼 더>

부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.

Copyright© 2022 湘ICP备2022001581号-3