반응형
일단 MySQL에서 프로시저(Procedure) 함수(Function)를
디버그 하려는 경우에는
디버그 기능 자체가 없기 때문에
오라클처럼 편하게 디버깅이 불가능하다
하지만 방법이 아예 없는 건 아니고
먼저 위 쿼리를 보고
디버그 로그를 담을 테이블을 만들어 준다
CREATE TABLE 스키마명.log_table (
num int DEFAULT NULL,
msg varchar(255) DEFAULT NULL,
date datetime DEFAULT NULL
)
다음은 디버그 용도로 사용할
프로시저를 만들어 줘야하는데
역시 아래 쿼리를 그대로 옮겨주면 된다
CREATE PROCEDURE 스키마명.PROC_LOG(MSG VARCHAR(255))
BEGIN
INSERT INTO 스키마명.LOG_TABLE VALUES((SELECT NUM
FROM ( SELECT IFNULL(MAX(num),0)+1 AS NUM AS NUM
FROM 스키마명.LOG_TABLE
) A
), MSG, NOW());
END
위 프로시저까지 작성을 해 줬으면
이제 함수 프로시저 디버깅이 가능해지게 되는데
디버깅을 하려는 프로시저와 함수로 들어간 뒤
CALL 스키마명.PROC_LOG(값);
을 넣어주면 프로시저와 함수를 수행하면서
CALL PROC_LOG()를 호출하는 시점마다
LOG_TABLE 테이블로 값이 삽입되게 된다
위 예제에서는 테스트를 위해 'TEST'를 사용했지만
실 사용시에는 해당 부분만 변수로 변경해주면 된다
이후 디버그 용도로 작성할 프로시저를 넣어놓은
프로시저나 함수를 호출한 뒤에
LOG_TABLE을 확인해보면 값이 정상적으로 들어간 것이 보인다
반응형
'SQL > MySQL' 카테고리의 다른 글
MySQL 소수점 반올림 올림 내림 사용방법 정리 (0) | 2021.03.15 |
---|---|
MySQL 현재 실행중인 쿼리 확인 및 강제 중단방법 (0) | 2021.03.11 |
MySQL REPLACE INTO 문 사용방법 및 예제 (0) | 2021.02.19 |
MySQL GROUP BY HAVING 사용방법 (0) | 2021.02.08 |
MySQL 인덱스 조회 생성 수정 삭제 및 타는지 확인방법 (0) | 2021.02.03 |
댓글