CURSOR

2022. 2. 15. 14:06Database/MSSQL

[ 커서(CURSOR ) 반복문 구문 ]
DECLARE @C_A VARCHAR(10)

, @C_B VARCHAR(10)

, @C_C VARCHAR(10)
DECLARE RTN_CURSOR CURSOR  
FOR
SELECT A, B, C
FROM TABLE
OPEN RTN_CURSOR
WHILE( 1 = 1 )
BEGIN
FETCH NEXT FROM RTN_CURSOR 
INTO @C_A, @C_B, @C_C


IF ( @@FETCH_STATUS <> 0 )
BREAK;
로직

END
CLOSE RTN_CURSOR
DEALLOCATE RTN_CURSOR

 

 

[ CURSOR 반복문에서 특정조건 시 로직 건너뛰게 하려면 GOTO 이용하면 된다. ]
- IF 특정조건 
  BEGIN 
  GOTO POINT_A (아무거나 상관없음)
  END
  EXEC LOGIC_A

  POINT_A

  (특정조건 만족 시 LOGIC_A 실행안됨)

 

[ CURSOR_STATUS ]
- 커서가 닫혔는지 확인 후 커서 닫음 (안 닫혀있으면 오류 발생하기 때문)


IF CURSOR_STATUS('GLOBAL', '커서이름') > 0
BEGIN
CLOSE 커서이름
DEALLOCATE 커서이름
END

'Database > MSSQL' 카테고리의 다른 글

[ PIVOT ] 행을 열로 바꾸기  (0) 2022.02.15
[ STUFF / FOR XML PATH ] 여러행 하나의 행으로 합치는 방법  (0) 2022.02.15
MSSQL TIps  (0) 2022.02.15
PROCEDURE Tips  (0) 2022.02.15
WITH (NOLOCK)  (0) 2021.01.14