'prepare'에 해당되는 글 1건

  1. 2013.01.17 MySQL: PREPARE 구문에서 입출력 변수 사용하기
카테고리 없음2013. 1. 17. 11:44

1. 입력 변수


1) MySQL Reference Manual 에 따르면, 아래와 같이 EXECUTE ... USING ... 형식으로 지정한다.

SET @var_user_id = 'Fantine';

SET @var_user_name = 'Anne';


SET @var_query = CONCAT('SELECT * FROM user_info WHERE user_id = ? OR user_name = ?');


PREPARE stmt1 FROM @var_query;

EXECUTE stmt1 USING @var_user_id, @var_user_name;

DEALLOCATE PREPARE stmt1;

 

2) 그런데, 그냥 다음과 같이 직접 써도 된다. 음...

SET @var_user_id = 'Fantine';

SET @var_user_name = 'Anne';


SET @var_query = CONCAT('SELECT * FROM user_info WHERE user_id = @var_user_id OR user_name = @var_user_name');


PREPARE stmt1 FROM @var_query;

EXECUTE stmt1;

DEALLOCATE PREPARE stmt1; 

 

3) 변수를 DECLARE 구문으로 선언한 경우에는 다음의 방법만 가능하다.

DECLARE var_user_id nvarchar(255);

DECLARE var_user_name nvarchar(255);

 

SET var_user_id = 'Fantine';

SET var_user_name = 'Anne';


SET @var_query = CONCAT('SELECT * FROM user_info WHERE user_id = ''', var_user_id, ''' OR user_name = ''', var_user_name, '''');


-- 또는

-- SET @var_query = CONCAT('SELECT * FROM user_info WHERE user_id = \'', var_user_id, '\' OR user_name = \'', var_user_name, '\'');


PREPARE stmt1 FROM @var_query;

EXECUTE stmt1;

DEALLOCATE PREPARE stmt1


 

2. 출력 변수

 

1) 변수에 직접 지정 한다.

SET @var_out_param = ''; -- (변수 초기화가 필요없으면) 생략 가능함!!!

 

SET @var_query = CONCAT('SELECT user_name INTO @var_out_param FROM user_info WHERE user_id = ''Fantine''');

-- 또는

-- SET @var_query = CONCAT('SELECT user_name INTO @var_out_param FROM user_info WHERE user_id = \'Fantine\'');


PREPARE stmt1 FROM @var_query;

EXECUTE stmt1;

DEALLOCATE PREPARE stmt1;

 

-- 결과 확인

-- SELECT @var_out_param;


2) 변수를 DECLARE 구문으로 선언한 경우에는 다음의 방법만 가능하다. 

DECLARE var_user_name nvarchar(255);


SET @var_out_param = ''; -- (변수 초기화가 필요없으면) 생략 가능함!!!

 

SET @var_query = CONCAT('SELECT user_name INTO @var_out_param FROM user_info WHERE user_id = ''Fantine''');

-- 또는

-- SET @var_query = CONCAT('SELECT user_name INTO @var_out_param FROM user_info WHERE user_id = \'Fantine\'');


PREPARE stmt1 FROM @var_query;

EXECUTE stmt1;

SET var_user_name = @var_out_param;

DEALLOCATE PREPARE stmt1;

 

-- 결과 확인

-- SELECT var_user_name;



Posted by 좋은나무