728x90
비지니스 로직에서 데이터베이스 관련 구문을 사용하지 않기 위해 종종 Stored Procedure 로 많은 로직을 옮기곤 합니다. View 와 Logic 을 분리한다는 차원 이외에도 보안적인 측면이나 불필요한 에러를 막기 위한 것 이외에도 Strongly Typed 프로그래밍의 명확한 적용을 위해서라도 유용한 방법입니다.

SP 를 사용하는 몇 안되는 단점 중 하나가 에러처리 부분이 아닐까 싶습니다. NoPD 군은 그동안 SQL 구문 날코딩을 사랑하다 최근 SP 로 로직을 모두 옮기어 조그만 프로젝트를 하나 하고 있는데, 여기저기 검색하다가 정갈하게 정리된 내용을 발견해서 공유할까 합니다.

   SELECT @err = @@ERROR, @row = @@ROWCOUNT
   IF @err != 0 OR @row != 1
   BEGIN
    SET @result = 'sp_commitContent|컨텐츠 수정에 문제가 있습니다. 관리자를 컨택해 주세요.'
    GOTO ERROR
   END
   
   ERROR:
    RAISERROR(@result, 11, 1)
    RETURN
@@ERROR 값과 @@ROWCOUNT 값을 같이 이용하여 쿼리가 정상적으로 수행 되었는지를 확인하는 방법이 바로 그것입니다. 이미 다들 아시는 내용일지 모르겠으나 DB 를 날쿼리 중심으로 쓰던 NoPD 군에게는 새로운 SQL 구문이 아닐 수 없습니다! ^^

- NoPD -
728x90

+ Recent posts