프로그래밍/DB

[DB] MSSQL 저장프로시저 디버그

ss-pro 2022. 8. 23. 23:12
반응형

저장프로시저로 디버깅하는 방법에 대해 알아 보겠습니다. 프로시저를 만들고 테스트 할때 해당값이 올바른지 테스트를 해봐야되는 상황이 있습니다. SQL Management의 디버그 메뉴를 사용하면 편리하게 디버깅을 할 수 있습니다. 그럼 Pubs 데이터베이스로 디버깅 테스트 해보겠습니다. 

1. print문을 사용해서 디버깅
먼저 Pubs 데이터베이스에 아래와 같이 reqByroyalty 프로시저 생성합니다. titleauthor테이블의 percentage의 개수와 title_id의 max값을 리턴받는 프로시저를 만듭니다. print문을 사용해서 테스트값을 출력해서 확인하는 방법이 있습니다. 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
CREATE PROCEDURE [dbo].[reqByroyalty] @percentage int
AS
 
declare @count int
declare @title_id_max varchar(6)
 
set @count= 
(
    select count(*) cnt  from titleauthor
    where titleauthor.royaltyper = @percentage
)
 
set @title_id_max= 
(
    select max(title_id) from titleauthor
    where titleauthor.royaltyper = @percentage
)
 
print @title_id_max
print @count
 
select @count cnt , @title_id_max title_id_max
 
GO
 

Print문을 사용해서 출력하고 싶은 변수를 출력하면 아래와 같이 메세지 항목에 해당변수값을 출력 할 수 있습니다. 간단하게 테스할때 손쉽게 해당값을 확인할 수 있습니다. 

2. SQL Management를 사용한 디버깅
디버깅 하고 싶은 프로시저항목에서 저장프로시저스크립팅->Create, Alter선택합니다. 새쿼리창에 스크립트가 나타나면 디버그 하고싶은 위치에 F9키를 사용하여 중단점 설정을 합니다. F11는 한단계씩 코드실행, F10은 프로시저 단위 실행이니 디버깅시 적절히 사용하면됩니다. 

이제 exec문을 사용해서 저장프로시저를 실행합니다. 프로시저 항목에 마우스 우클릭을 하면 저장프로시저 실행항목이 있고 실행하면 새 쿼리 창에 exec문을 만들어 줍니다. 

이제 마지막입니다. F11키를 사용해서 exec실행되는 스크립트를 실행하면 아래 그림과 같이 디버깅 중... 으로 나타나며 디버깅이 되면 저장프로시저 내부코드로 이동해서 라인별로 해당값이 어떻게 할당되는 지 확인 할 수 있습니다.