본문 바로가기

Developer/DataBase

[MySQL] 사용자 정의 변수 선언 방법

쿼리문을 짜다보면, 임의 변수 선언이 필요한 경우가 있다.

 

set @var := 'Hello'
set @var1 = 'Hello', @var2 = 'Hi'

변수 값을 할당하는 SET 문장은 "=" 또는 ":=" 를 사용하여 선언할 수 있다.

 

SET @temp_num := 1;

SELECT (@temp_num := @temp_num + 1);

커넥션에서 정의된 사용자 변수는 SQL 문장에서 그 값을 참조해서 다른 연산을 수행할 수도 있다.

 

위와 같은 연산을 사용할 때, 주의해야할 점은,

매뉴얼에, "절대 동일 SQL 문장에서 변수에 값을 할당하고 동시에 값을 참조하지 말라"는 주의사항이 있다.

일반적으로 사용자가 기대하는 작동 결과를 보여주지만, 이 결과는 MySQL에서 보증하지 않는 결과이다.

 

따라서, 변수를 사용할 때, 초기화 하는 방법을 자주 사용한다.

SET @temp_num = 1;

SELECT (@temp_num := @temp_num+1)
FROM (SELECT @temp_num := 1);

FROM 절의 "SELECT @temp_num := 1"은 SET과 동일한 역할을 수행한다.