DECLARE

moon.kick·2025년 3월 13일

SQL

목록 보기
2/11

DECLARE는 SQL에서 변수, 커서, 예외 등을 선언할 때 사용하는 키워드입니다. 주로 저장 프로시저, 함수 또는 트리거 내에서 사용됩니다. 사용되는 방식은 데이터베이스 시스템에 따라 약간 다를 수 있지만, 기본적으로는 변수나 커서, 예외를 선언할 때 사용됩니다.

다음은 DECLARE에 대한 주요 용도입니다:

1. 변수 선언:

SQL에서 변수를 선언할 때 사용됩니다. 변수는 저장 프로시저 내에서 값을 저장하고 처리하는 데 사용됩니다.

예시:

DECLARE @user_name VARCHAR(50);
DECLARE @order_count INT;

위 예시에서 @user_name@order_count는 각각 문자열과 정수형 변수입니다.

2. 커서 선언:

커서는 SQL 쿼리의 결과 집합을 순차적으로 처리할 수 있도록 해줍니다. DECLARE는 커서를 선언할 때 사용됩니다.

예시:

DECLARE order_cursor CURSOR FOR
SELECT order_id, user_id
FROM orders;

위 예시에서 order_cursor라는 커서를 선언하고, orders 테이블에서 order_iduser_id를 가져오는 쿼리 결과를 처리할 수 있습니다.

3. 예외 선언:

DECLARE는 예외를 선언할 때도 사용됩니다. 예외는 특정 조건이 발생했을 때 프로그램 흐름을 제어하는 데 유용합니다.

예시:

DECLARE division_by_zero EXCEPTION;

위 예시에서 division_by_zero라는 예외를 선언하여, 이를 나누기 연산에서 0으로 나누는 등의 오류를 처리할 수 있습니다.

4. 사용 예 (MySQL에서는 주로 DECLARE와 함께 변수와 커서를 사용):

DELIMITER $$

CREATE PROCEDURE get_order_details()
BEGIN
    DECLARE order_total INT;
    DECLARE done INT DEFAULT 0;
    DECLARE order_cursor CURSOR FOR 
    SELECT amount FROM order_line WHERE order_id = 1;
    DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1;
    
    OPEN order_cursor;
    read_loop: LOOP
        FETCH order_cursor INTO order_total;
        IF done THEN
            LEAVE read_loop;
        END IF;
        -- 여기서 `order_total`을 처리하는 로직 추가
    END LOOP;
    
    CLOSE order_cursor;
END$$

DELIMITER ;

이 예시에서:

  • DECLARE를 사용하여 order_total 변수와 order_cursor 커서를 선언했습니다.
  • 커서를 열고, 데이터를 순차적으로 처리하여 각 주문의 amount를 추출합니다.

5. 중요 사항:

  • DECLARE는 보통 저장 프로시저, 함수 또는 트리거 내에서 사용됩니다.
  • 변수는 선언된 블록 내에서만 유효합니다.
  • 커서 및 예외 처리도 저장 프로시저 내에서 주로 사용됩니다.

이런 방식으로 DECLARE는 SQL 프로그래밍에서 유용하게 사용되는 기능입니다!

profile
@mgkick

0개의 댓글