본문 바로가기
SQL/MySQL

MySQL 프로시저 함수 디버깅 하는 방법

by wakestand 2021. 3. 10.
반응형

일단 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을 확인해보면 값이 정상적으로 들어간 것이 보인다

반응형

댓글