'SP'에 해당되는 글 1건

  1. 2016.05.17 [Mysql] 스토어드 프로시저
MySQL2016.05.17 14:42

 

[프로시저 생성]

   

DELIMITER ;;

CREATE PROCEDURE sp_sum(IN i_param1 INTEGER, IN i_param2 INTEGER, OUT o_param3 INTEGER)

BEGIN

SET o_param3 = i_param1 + i_param2;

END;;

   

DELIMITER ;

   

※ MSSQL과는 다르게 파라미터나 프로시저의 처리 내용을 변경할 때는 ALTER PROCEDURE 명령어를 사용하지 못한다. 이때는 DROP PROCEDURE로 먼저 sp를 삭제하고 생성해야 한다.

   

[프로시저 실행]

   

SET @result := 0;

SELECT @result;

   

CALL sp_sum(1,2,@result);

SELECT @result;

   

※ 프로시저는 CALL 명령어로 실행 한다. IN 타입의 파라미터는 세션 변수 또는 상수 값을 그대로 전달해도 무방하지만, OUT이나 INOUT 타입의 파라미터는 세션 변수를 이용해 값을 주고 받아야 한다.

   

[스토어드 프로시저의 커서 반환]

   

DELIMITER ;;
CREATE PROCEDURE sp_selectEmployees (IN i_empno INTEGER)
BEGIN
SELECT * FROM employees WHERE emp_no=i_empno;
END;;
 

  

   

※ sp에서 쿼리의 결과 셋을 클라이언트로 전송하는 기능은 SP의 디버깅 용도로도 자주 사용한다.

예)

   

DELIMITER ;;

CREATE PROCEDURE sp_sum( IN i_param1 INTEGER, IN i_param2 INTEGER, OUT o_param3 INTEGER)

BEGIN

SELECT '> Stored procedure started.' AS debug_message;

SELECT CONCAT(' > i_param1 : ', i_param1) AS debug_message;

SELECT CONCAT(' > i_param2 : ', i_param2) AS debug_message;

SET o_param3 = i_param1 + i_param2;

SELECT '> Stored procedure completed.' AS debug_message;

END;;

DELIMITER ;

   

SET @result := 0;

CALL sp_sum(1,2, @result);

   

  

 

신고

'MySQL' 카테고리의 다른 글

[Mysql] 변수  (0) 2016.05.19
[Mysql] 제어문  (0) 2016.05.19
[Mysql] 스토어드 함수  (0) 2016.05.17
[Mysql] 스토어드 프로시저  (0) 2016.05.17
[Mysql] 실행계획2  (1) 2015.05.15
[Mysql] 실행계획  (0) 2015.05.11
Posted by TM ~ing