-
PROCEDURE 프로시저 끄적거리기 (CURSOR,RETURN)SQL 2024. 3. 24. 19:25반응형
프로시저가 return이 잘되는지
커서가 잘 작동하는지
예외상황시 프로시저를 빠져나가는 return이 되는지
그런것들을 끄적인 프로시저임.
CREATE PROCEDURE dbo.TEST_PROC @ERROR_MSG VARCHAR(1000) OUTPUT, -- 응답 에러 메세지 @MEMBER_NO INT, -- 현재 회원번호(기준) @MEMBER_NO_LIST VARCHAR(1000) -- 체크대상 회원번호 AS BEGIN DECLARE @STEP_MSG VARCHAR(100) DECLARE @FROM_MEMBER_NO INT, @CUS_CLEAR_SEQ INT , @TOTAL_CUS_LIST VARCHAR(1050) = CONVERT(VARCHAR(10), @MEMBER_NO) + ',' + ISNULL(@MEMBER_NO_LIST, '') -- 현재 회원과 병합될 회원 콤마 단위로 합치기 PRINT @TOTAL_CUS_LIST; -- 회원번호가 널이거나 1이면 리턴시킨다. IF @MEMBER_NO IS NULL OR @MEMBER_NO IN (0, 1) BEGIN SET @ERROR_MSG = N'[Case 1. Invalid MemberNo.]'; RETURN; -- 프로시저를 완전히 빠져나가는 리턴이다. END ------------------------------------ -- 회원번호가 2면 리턴시킨다. IF @MEMBER_NO = 2 BEGIN -- 특정 값이나 메시지를 리턴합니다. SET @ERROR_MSG = N'[Case 2. Invalid MemberNo.]'; RETURN; -- 프로시저를 완전히 빠져나가는 리턴이다. END ------------------------------------- -- 커서 진입전 메세지 출력하기. PRINT N'Run Cursor Ready'; -- 한건씩 커서 처리 DECLARE USER_CURSOR CURSOR FOR SELECT DATA -- 콤마를 자르는 함수는 리턴이 테이블형이고 DATA라는 컬럼이 정의되어있다. FROM DBO.FN_XML_SPLIT(@MEMBER_NO_LIST, ',') OPEN USER_CURSOR FETCH NEXT FROM USER_CURSOR INTO @FROM_MEMBER_NO WHILE @@FETCH_STATUS = 0 BEGIN ------------------------------------------------------------------------------------------------------------------- -- 콤마단위로 자른 값을 출력하기 PRINT @FROM_MEMBER_NO ------------------------------------------------------------------------------------------------------------------- FETCH NEXT FROM USER_CURSOR INTO @FROM_MEMBER_NO END CLOSE USER_CURSOR -- 커서를 닫는다. DEALLOCATE USER_CURSOR -- 사용이 끝난 커서를 메모리에서 해제한다. END
실행하기
DECLARE @RETURN_ERROR_MESSAGE VARCHAR(1000) DECLARE @MEMBER_NO INT = 1 DECLARE @MEMBER_NO_LIST VARCHAR(1000) = '11,22,33,44,55' EXEC dbo.TEST_PROC @ERROR_MSG = @RETURN_ERROR_MESSAGE OUTPUT, @MEMBER_NO = @MEMBER_NO, @MEMBER_NO_LIST = @MEMBER_NO_LIST -- OUTPUT 매개변수 값 출력 SELECT @RETURN_ERROR_MESSAGE AS N'RETURN_ERROR_MESSAGE'
반응형'SQL' 카테고리의 다른 글
SQL기초 DISTINCT, GROUP BY 차이 (0) 2024.03.03 [오라클] 1:1 질문과 답변 게시판 SQL 정리 (0) 2023.09.30 MYSQL, MARIA 테스트 데이터 넣기 (0) 2020.07.27 조인 JOIN , 카운트 COUNT , 중복카운트 COUNT DISTINCT 예제 (0) 2020.05.04 MYSQL D-DAY 디데이 계산하기 (0) 2020.04.17