반응형
저장프로시저를 작성하다보면 처리중간에 반복문을 탈출하거나 지속처리, 프로시저 탈출등과 같이 분기처리를 해야되는 경우가 있는데 이 경우 아래 4가지를 사용하여 분기처리를 할 수 있습니다.
1. Continue / Break문
반복문내에서 반복문을 탈출하거나 지속처리할때 사용합니다. Continue는 반복문의 초기 위치로 이동 시킬 경우에 사용하고, Break는 반복문을 탈출시 사용합니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
declare @i int
declare @count int
set @i =1;
print '3의배수는'
while (@i < 15)
begin
if (@i % 3 = 0)
begin
print trim(str(@i))
set @i = @i + 1;
continue; --continue문 while(@i <10)위치로 이동
end
set @i = @i + 1;
end
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
declare @i int
declare @count int
set @i =1;
print '3의배수는'
while (@i < 15)
begin
if (@i % 3 = 0)
begin
break; --조건이 맞을경우 while문을 탈출합니다
end
set @i = @i + 1;
end
print '가장작은 3의배수 값은:' + trim(str(@i)) + '입니다'
|
2. Goto문
특정위치로 이동하는 경우 사용하며, 에러처리와 같이 예외처리시에 주로 사용합니다. 아래 예시를 보면 특정조건(if=5)인경우 goto jump_1으로 이동하라는 부분하여 처리 하는 부분을 확인 할 수 있습니다. jump_1, jump_2와 같이 두개의 분기가 있을 경우는 jump_1으로 이동시 해당시점 부터 순차적으로 처리되는 부분을 확인 할 수 있습니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
declare @i int
set @i = 0
while (@i < 100)
begin
if (@i = 5) goto jump_1
if (@i = 6) goto jump_2
set @i = @i + 1;
end
jump_1:
print 'jump_1'
print @i
jump_2:
print 'jump_2'
print @i
|
쿼리결과
jump_1
5
jump_2
5
3. Return문
최근에는 특정 조건이 맞지 않는경우 ealry return을 사용하는 부분이 코드 가독성이 좋다고 하는 추세가 많습니다. 프로시저 작성시에 특정 조건이 맞거나? 맞지 않아서 해당시점에서 프로시저를 종료시키고 싶을 경우에 사용합니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
declare @i int
set @i = -1
while (@i < 100)
begin
if (@i < 0 )
begin
print '입력값에 이상이 있습니다'
return
end
if (@i = 5) goto jump_1
set @i = @i + 1;
end
jump_1:
print 'jump_1'
print @i
|
처리결과 : 입력값에 이상이 있습니다
MSSQL에는 제공되는 continue,break,goto,return분기문을 사용해서 프로그램을 하시기 바랍니다. goto문 무조건 안좋다는 인식이 있기도 한데 해당부분을 적절하게 사용하면 보다 가독성 좋은 코드로 작성 가능합니다.
'프로그래밍 > DB' 카테고리의 다른 글
[DB] postgresql pgAdmin4 초기설정으로 리셋하기 (0) | 2023.06.05 |
---|---|
[DB] postgresql DB구축하기 (0) | 2023.06.04 |
[DB] MSSQL 문자열 숫자유무 체크 (ISNUMERIC) (0) | 2023.02.22 |
[DB] MSSQL 동의어(시노님) 사용 방법 (0) | 2023.02.18 |
[DB] MSSQL 요일 정보 (datename, datepart), 요일 한글 함수 (0) | 2022.08.31 |