Oracle - Cursor / PostgreSQL - Record

Ada·2024년 5월 5일

DB

목록 보기
5/7

Oracle에서의 커서 사용

Oracle PL/SQL에서 커서는 데이터베이스 테이블의 행을 순차적으로 처리할 때 사용됩니다. 커서를 사용하는 일반적인 단계는 다음과 같습니다.

선언(Declare)

커서를 선언하고, 어떤 SQL 쿼리의 결과를 순회할지 정의합니다.

열기(Open)

선언된 커서를 열어 쿼리를 실행하고, 결과 집합을 준비합니다.

가져오기(Fetch)

열린 커서에서 데이터를 한 행씩 가져와서 PL/SQL의 변수에 저장합니다.

종료 조건 확인(Exit When)

더 이상 처리할 데이터가 없을 경우 루프를 종료합니다.

닫기(Close)

커서를 닫아서, 관련된 시스템 리소스를 해제합니다.



이 과정을 구체적인 예로 설명하면 다음과 같습니다.

DECLARE
    CURSOR emp_cursor IS SELECT * FROM employees;  -- 커서 선언: employees 테이블의 모든 데이터를 선택
    emp_record emp_cursor%ROWTYPE;                 -- emp_cursor의 각 행을 저장할 변수 선언
BEGIN
    OPEN emp_cursor;                               -- 커서를 열어 SQL 쿼리 실행
    LOOP
        FETCH emp_cursor INTO emp_record;          -- 커서에서 데이터를 한 행씩 emp_record에 저장
        EXIT WHEN emp_cursor%NOTFOUND;             -- 더 이상 데이터가 없으면 루프 종료
        DBMS_OUTPUT.PUT_LINE('Employee Name: ' || emp_record.name);  -- 출력
    END LOOP;
    CLOSE emp_cursor;                              -- 커서를 닫고 리소스 해제
END;
/

PostgreSQL에서의 레코드 사용

PostgreSQL에서는 RECORD 타입을 사용하여 SQL 쿼리 결과를 저장하고, 각 행에 대해 반복 처리를 수행합니다.
PostgreSQL의 커서 사용 방식은 Oracle보다 간결한 경우가 많으며, LOOP 구문 내에서 직접 쿼리를 실행하고 결과를 순회할 수 있습니다.

DO $$
DECLARE
    emp_record RECORD;  -- RECORD 타입 선언
BEGIN
    FOR emp_record IN SELECT * FROM employees LOOP  -- employees 테이블을 순회
        RAISE NOTICE 'Employee Name: %', emp_record.name;  -- 각 행의 이름을 출력
    END LOOP;
END $$;
profile
백엔드 프로그래머

0개의 댓글