DataBase/MySql

MySql 프로시저 간단예제

마시멜로를찾아서 2019. 2. 11. 11:02
반응형

DROP PROCEDURE IF EXISTS `TEST_STORED_PROCEDURE`;


DELIMITER //

-- 일반적으로 세미콜론(;)이 구문의 종료문자


-- DELIMITER 명령어로 구분문자(//)로 변경하고 

-- END;

-- //

-- DELIMITER; 종료선언


-- DELIMITER 명령어로 구분 문자(//)를 변경하고 나서 세미콜론을 넣어도 해당 명령어가 끊기지 않고 계속 이어집니다.



CREATE PROCEDURE `TEST_STORED_PROCEDURE`

(

  INOUT i_test_id             VARCHAR(20),              /* test ID */

  OUT o_result_cd               VARCHAR(2),            /* 응답코드 */

  OUT o_result_msg             VARCHAR(100)          /* 응답메시지 */

)


BEGIN

/******************************************************************************

   NAME:       TEST_STORED_PROCEDURE

   PURPOSE:    테스트 프로시저 

******************************************************************************/


  DECLARE EXIT HANDLER FOR SQLEXCEPTION BEGIN

    SET o_result_cd   = '01';

    SET o_result_msg = '조회 요청 중 오류가 발생하였습니다.';

  END;

  

  DECLARE EXIT HANDLER FOR NOT FOUND BEGIN

    SET o_result_cd   = '02';

    SET o_result_msg = '요청한 id가 유효하지 않습니다.';

  END;

  

  SELECT TEST_NAME

  INTO o_name

  FROM TEST_TABLE

  WHERE TEST_ID = i_test_id;


  SET o_result_cd   = '00';

  SET o_result_msg = '정상처리되었습니다.';

  

END;

//

DELIMITER;




SQL 실행 테스트

------------------------------------------

SET @id= ' TEST';       


CALL TEST_STORED_PROCEDURE(

  @id

, @cd

      , @message

)

SELECT@id, @cd, @message;

----------------------------------------

반응형