데이터베이스의 저장 프로시저와 커서에 대한 설명

WI
Wilan
읽기 시간: 약 2분 소요
Stored Procedure & Cursor

저장 프로시저

저장 프로시저는 SQL 명령어들의 집합 또는 데이터베이스에 저장된 특정 이름의 서브프로그램이라고 할 수 있습니다.

저장 프로시저가 수행하는 과정은 입력 매개변수를 받은 다음, 출력 매개변수 형태로 값을 호출자에게 반환하고, 트리거나 다른 저장 프로시저와 같은 프로그램에 의해 실행되는 데이터베이스에서 데이터 처리 작업을 수행합니다.

저장 프로시저 사용의 몇 가지 장점은 다음과 같습니다:

  • 애플리케이션 성능 향상: 생성된 저장 프로시저는 애플리케이션에서 전송되고 아직 컴파일되지 않은 SQL 명령보다 더 빠르게 실행되기 때문입니다.
  • 데이터베이스와 애플리케이션 간 네트워크 트래픽 감소: 컴파일되지 않은 SQL을 전송할 필요가 없기 때문입니다.
  • 모든 애플리케이션에서 반복적이고 투명하게 사용할 수 있습니다.

그럼에도 불구하고 저장 프로시저 사용에는 몇 가지 단점이 있습니다:

  • 디버그할 수 없습니다.
  • 서버 하드웨어 부하가 증가합니다.
  • 작성이 쉽지 않고 특정 지식이 필요합니다.

저장 프로시저 구문

저장 프로시저에 있는 구문은 다음과 같습니다:

저장 프로시저 작성 구문

DELIMITER //

CREATE PROCEDURE nama_procedure()
BEGIN
    query sql
END //

DELIMITER ;

저장 프로시저 호출 구문

CALL nama_procedure();

저장 프로시저 변수 선언 구문

DECLARE nama_variable tipedata(panjang) DEFAULT nilai;

매개변수가 있는 저장 프로시저 구문

매개변수에는 세 가지 모드가 있습니다:

  • IN
    매개변수의 기본 형태로, 저장 프로시저의 모든 변경 사항이 매개변수에 영향을 미치지 않습니다.

  • OUT
    매개변수 값을 변경한 후 호출자에게 다시 보내는 모드입니다.

  • INOUT
    INOUT의 조합 모드입니다.

매개변수가 있는 저장 프로시저 정의 구문 예제

DELIMITER //

CREATE PROCEDURE nama_procedure(
    [mode] [parameter] [tipe_data]
)
BEGIN
    query sql
END //

DELIMITER ;

매개변수가 있는 저장 프로시저 호출 구문 예제

CALL nama_procedure([nilai_parameter]);

커서

커서는 특정 SQL 문 처리를 저장하는 데 사용되는 데이터베이스 객체이거나, 하나 이상의 행 또는 레코드를 포함하는 쿼리 결과를 저장하는 변수라고 할 수 있습니다.

커서는 테이블의 데이터 행 수만큼 반복할 수 있습니다. 커서에는 몇 가지 특성이 있습니다:

  • 업데이트할 수 없습니다(읽기 전용).
  • 커서는 한 방향으로만 이동합니다(비스크롤 가능).
  • 커서가 참조하는 테이블을 업데이트하지 않는 것이 좋습니다. 원치 않는 결과를 초래할 수 있기 때문입니다(민감하지 않음).

커서 구문

커서 생성에는 여러 단계가 있습니다:

1. 선언

커서를 선언하는 단계로, 구문은 다음과 같습니다:

DECLARE nama_cursor CURSOR FOR
pernyataan_SELECT;

2. 열기

커서를 열거나 활성화하는 단계로, 구문은 다음과 같습니다:

OPEN nama_cursor;

3. 가져오기

커서에서 데이터를 가져와 변수에 저장하는 단계로, 구문은 다음과 같습니다:

FETCH nama_cursor INTO daftar_variabel;

4. 닫기

커서를 비활성화하는 단계로, 구문은 다음과 같습니다:

CLOSE nama_cursor;

저장 프로시저와 커서의 차이점

저장 프로시저와 커서의 차이점은 저장 프로시저는 MySQL의 선언 명령어만을 보유하는 반면, 커서는 쿼리 결과를 보유함과 동시에 쿼리 결과의 포인터 역할을 한다는 것입니다.

이로 인해 커서는 저장 프로시저가 수행할 수 없는 복잡한 명령을 수행할 수 있습니다. 그 중 하나는 레코드를 반복하는 것입니다.

W

저자

Wilan

발리 아일랜드 테크노(Bali Island Tekno)의 정기 기고자로, 기술, 프로그래밍, 소프트웨어 엔지니어링 분야에 대한 지식을 적극적으로 공유하고 있습니다.

홈으로 돌아가기 최종 업데이트일: 2026년 6월 5일