[mysql] Stored Procedure (1)

2012. 4. 9. 14:51 from Dev

Stored procedure?


쉽게 설명하자면, stored procedure는 function의 역할을 하는 SQL code의 묶음입니다. 


굳이 이걸 사용해서 얻는 장점이라면.. 

application의 퍼포먼스를 높일 수 있다 - 컴파일이 되어 저장되기 때문에 일반 SQL 명령보다 빠름. 

application과 DB server 사이의 트래픽을 줄일 수 있다

정도일 것 같습니다. 물론 이것보다 많은 장점이 있겠지만 당장 피부에 와닿는 거는 이 정도구요, 싫어하시는 분들도 많습니다. 의외로 stored procedure를 사용하는 개발자는 적습니다. 


그러면, 이제 작성 방법에 대해서 적어보겠습니다.


1. DELIMITER //

mysql에서 기본으로 사용하는 delimiter(;)를 바꿔줍니다. 

끝난 후에는 다시 DELIMITER ; 로 되돌려 놓도록 합니다. 


2. BEGIN ~ END

프로시저의 구성은 BEGIN 부터 END 까지입니다. 自 BEGIN 至 END 라고나 할까.. 죄송합니다;;

여기까지 내용으로 뼈대를 만들어 보면 다음과 같습니다:


DELIMITER //

CREATE PROCEDURE myFirstProc()

BEGIN

...

END //

DELIMITER ; 


3. variable 설정

변수 선언은 DECLARE, 값 지정은 SET을 사용합니다. 

DECLARE variable_name datatype(size) DEFAULT default_value;


ex)

DECLARE x, y INT DEFAULT 0

SET x = 10;


혹은 SELECT COUNT(*) INTO x FROM products 이렇게도 사용합니다. 

variables scope는 당연히 적용이 되고.. 단, 변수 앞에 '@'를 넣으면 session 변수가 됩니다. 


Posted by banasun :