-
DB RETURN을 명시적으로 지정하지 않아 임의로 값이 바뀐 경우프로그래밍/의문 2018. 4. 6. 12:22반응형ALTER PROCEDURE spGiveStageClearReward@AccountID BIGINT,@StageID INT,@RewardItemID INTASBEGINBEGIN TRYINSERT INTO GameLog.dbo.ClearRewardLog (AccountUniqueID, -- NOT NULLStageID, -- NOT NULLRewardValue) -- NOT NULLVALUES (@AccountID, @StageID, @RewardItemID, GETDATE())END TRYBEGIN CATCH-- IGNORE EXCEPTIONEND CATCHEND
위 프로시저에 인자로 NULL이 넘어오면 INSERT 구문은 예외를 뿜지만, try~catch 구문이 걸려있으므로 예외는 잡힐것이다.
따라서 프로시저는 예외로 터지는 일 없이 정상적으로 실행될 것으로 보였다.하지만 내부에 예외가 발생한 시점에서, 기본 지정 RETURN 값이 변하게 되더라
declare @ReturnValue int = 0exec @ReturnValue = spGiveStageClearReward @AccountID, @StageID, NULL-- 프로시저는 정상적으로 실행되나, RETURN 값이 -6으로 왔다!사실 RETURN 값으로 프로시저의 성공, 실패를 체크하려고 했다면 애초에 명시적으로 RETURN을 지정하는 것이 좋았을 거 같긴 하다.
반응형'프로그래밍 > 의문' 카테고리의 다른 글
정규 표현식으로 코드 바꾸기(비주얼 스튜디오) (0) 2018.04.19 tcmalloc은 비주얼 스튜디오에서 디버그모드로 실행 시 크래쉬를 일으킨다. (0) 2018.04.18 게임에서의 아이템 강화, n번 했을 때 성공할 확률은 어떻게 될까? (0) 2018.02.26 멀티플레이어 게임 프로그래밍 - 코드 오류 수정 (0) 2018.02.20 저장 프로시저 동시 호출로 인해 행 개수 조절에 실패한 경우 (0) 2017.12.19