💾 Data/SQL

[MySQL] 프로시저 변수(DECLARE, SET)에 대한 이해

heywantodo 2024. 12. 10. 13:57
728x90
반응형

[MySQL] 프로시저 변수(DECLARE, SET)에 대한 이해

프로시저는 데이터베이스 내에서 여러 SQL 문을 그룹화라여 실행할 수 있는 저장된 프로그램이다.

이 프로시저 내에서 변수를 사용하면 중간 결과를 저장하거나 조건에 따라 로직을 제어하는 것이 가능하다.

 

SQL 프로시저 변수란?

SQL 프로시저 변수는 프로시저 내에서 데이터를 저장하고 조작할 수 있는 메모리 공간이다.

변수는 프로시저가 실행되는 동안 값을 저장하고, 필요에 따라 참조할 수 있다.

 

프로시저 변수에는 로컬 변수, 전역 변수 2가지의 변수가 있다.

로컬 변수 프로시저 내에서만 사용되며, 프로시저가 종료되면 메모리에서 사라진다.
전역 변수 데이터베이스 세션 동안 유지되며, 여러 프로시저에서 공유할 수 있다.

 

변수는 사용하기 전에 반드시 선언해야한다.

 

변수 선언 (DECLARE)

SQL에서는 `DECLARE`문을 사용하여 변수를 선언한다.

DECLARE variable_name datatype [DEFAULT value];

-- ex
DECLARE @employeeCount INT DEFAULT 0;
DECLARE @employeeName VARCHAR(100);
  • `variable_name` : 변수의 이름
  • `datatype` : 변수의 데이터 타입 (ex: INT, VARCHAR 등)
  • `DEFAULT value` : 초기값 (선택 사항)

변수를 선언한 후에는, 프로시저 내에서 다양한 작업을 수행할 수 있다.

 

변수 할당 및 수정 (SET)

이미 선언된 변수에 값을 할당하려면 `SET`이나 `SELECT`를 사용할 수 있다.

-- 변수에 값 할당
SET @EmployeeCount = 10;  
SELECT @employeeName = Name FROM Employees WHERE EmployeeID = 1; --

여러 변수를 한 번에 할당하는 것은 불가능하며, 한 번에 하나의 변수에만 값을 할당할 수 있다.

 

아래는 변수를 생성하고 할당하는 간단한 프로시저 예제이다.

해당 프로시저는 직원 수를 계산하고 출력한다.

CREATE PROCEDURE GetEmployeeCount
AS
BEGIN
    DECLARE @employeeCount INT;

    SELECT @employeeCount = COUNT(*) FROM Employees;

    PRINT 'Total Employees: ' + CAST(@employeeCount AS VARCHAR);
END;

 

로컬 변수는 프로시저 내에서만 유효하며, 프로시저 외부에서 접근할 수 없다. 

 

전역 변수

SQL Server에서 제공하는 시스템 변수는 `@@`으로 시작한다.

이러한 변수는 SQL 서버의 상태나 설정 정보를 제공한다.

SELECT @@VERSION;  -- SQL Server 버전 정보 조회
SELECT @@DBTS;     -- 현재 데이터베이스의 타임스탬프 조회

-- DB 시스템 변수 확인
SHOW GLOBAL VARIABLES
728x90
반응형