프로그래밍/Database

MySQL 프로시저 작성시 유의점

Doonee 2013. 10. 30. 12:38
반응형

모든 DECLARE 를 무조건 위에 선언하고 모든 SET 을 아래에 선언한다. 


DECLARE

SET

DECLARE (X)

SET


이런식으로 중첩되면 오류가 난다.


DECLARE

DECLARE (O)

SET

SET


이렇게 하는 것이 정상이다. 별 것 아닌 것 처럼 보여도 이러한 기본적인 실수 때문에 많은 시간을 허비하여 야근모드에 돌입할 수도 있다.


<정상적인 예시>

DELIMITER $$


USE `DB명`$$


DROP PROCEDURE IF EXISTS `프로시저명`$$


CREATE DEFINER=`DB명`@`%` PROCEDURE `프로시저명`(

파라미터 변수들...

  ,    OUT 변수2 INT

    )

BEGIN

DECLARE 변수 INT; (O)


SET 변수2 = -1;

      DECLARE 변수 INT; (<-- 여기에 오면 안됨)

SELECT  IFNULL(필드, 0) 

      INTO [DECLARE로 선언한변수]  

   FROM 테이블명 WHERE 검색조건 LIMIT 1;

INSERT INTO 테이블명 (필드들)

VALUES (파라미터 변수들);

SET 변수2 = 0;

END$$


DELIMITER ;