Purple Bobblehead Bunny

Database

[MySQL] 사용자 정의 변수

준영어린이 2023. 2. 3. 11:20


🚀 쿼리문을 짜면, 임의로 변수 선언이 필요 해 진다

변수 이름은 alphanumeric 문자와 ' _ ',  ' $ ',  ' , '로 구성이 된다.

 

alphanumeric 문자란?

http://www.ktword.co.kr/test/view/view.php?m_temp1=4061 

 

알파뉴메릭 코드

  Alphanumeric Code, Numeric Code   알파뉴메릭 코드, 영숫자 부호, 수치 코드, 2진 코드, 이진 코드, 2진 부호, 이진 부호, M진 코드, M진 부호(2022-02-02)

www.ktword.co.kr

 

 

변수에는 초기값이 지정되지 않고 null = default, Integer, real, String으로 값을 저장할 수 있다.

변수 이름은 ver5.0부터  대소문자 구분이 없어진다.

 

🚀 @

set @var1 := 'hello'
set @var2 = 'hello', @var2 = 'hi'

변수 값을 할당하는 set은 =, := 을 사용하여 선언할 수 있다.

 

set @num := 1;

select (@num := @num + 1);

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

저런 연산을 할 땐 동일 SQL 문장에서 변수에 값을 할당하고 동시에 값을 참조하면 안된다.

 

그래서 변수를 사용할 땐, 초기화 하는 방법을 주로 사용한다

 

set @num = 1;

select (@num := @num+1)
from (SELECT @num := 1); // from 절 구문은 set과 동일한 역할

 

 

🚀  지역변수

 

지역변수는 선언할 때 declare 문이 앞에 선언되어 있어야 한다.

저장 프로시저 내에서 지역변수 및 입력 매개변수로 사용할 수 있다.

 

delimiter //

create procedure test(var1 int)
begin
	declare start int unsigned default 1;
    declare finish int unsigned default 10;
    
    select var1, start, finish;
end; //

delimiter //

call test(5);
    

CREATE PROCEDURE sp_test(var1 INT) 
BEGIN   
    DECLARE start  INT unsigned DEFAULT 1;  
    DECLARE finish INT unsigned DEFAULT 10;

    SELECT  var1, start, finish;
END; //

delimeter ;

call test(5);

위에서 말했다시피 default 절이 없다면 초기값은 null이 되지 않는다.

여기서 지역변수의 범위는 begin ~ end 절 안이다

 

'Database' 카테고리의 다른 글

[OracleDB] 시퀀스(Sequence)  (0) 2022.05.25
[OracleDB] JOIN  (0) 2022.05.25
[OracleDB] 제약조건  (0) 2022.05.21
[OracleDB] SELECT  (0) 2022.05.15
[OracleDB] SQL 종류 (DDL.DML.DCL)  (0) 2022.05.14