반응형
모든 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 ;
'프로그래밍 > Database' 카테고리의 다른 글
오라클 DB 한글 테이블명 변경 (0) | 2014.12.05 |
---|---|
오라클 테이블 데이터이전 기본쿼리 (0) | 2014.11.27 |
SQLyog-9.5.0-3Community, mysql-connector-net-6.8.3 다운로드 (0) | 2014.03.28 |
데이터베이스 이전 Vol.1 - MDF, LDF 파일 백업 및 복원 (0) | 2010.03.23 |