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
반응형
'💾 Data > SQL' 카테고리의 다른 글
[MySQL] Prepared Statement (0) | 2025.01.07 |
---|---|
[MySQL] 프로시저에서의 매개 변수(IN, OUT, IN OUT) (1) | 2024.12.11 |
[MySQL] 실행중인 쿼리 확인하기 (0) | 2024.12.02 |
[MySQL] JSON_TABLE(), JSON_ARRAY() (2) | 2024.09.23 |
[MySQL] 데이터를 구분자로 Split 하기 (0) | 2024.09.13 |