안녕하세요.
다음과 같은 프로시저가 있다고 했을 때..
CREATE procedure [dbo].[SP_NAME]
@UserVal1 nchar(9)
@UserVal2 bit
AS
Begin
----- @UserVal1 과 @UserVal2 의 예외처리
IF @UserVal1='' or @UserVal2='' <-- 이렇게 조건을 잡는게 맞는지 알고 싶습니다.
Begin
사용자가 전달한 파라미터 값이 존재하지 않는 경우에 SP를 종료시키는 방법
End
----- @UserVal1 과 @UserVal2 값에 따른 처리
IF UserVal1 = 'MASTER'
Begin
MASTER 값에 대한 처리
End
ELSE
Begin
Slave 값에 대한 처리
End
IF @UserVal2 = 0 <-- 이 값이 0 / 1 값으로 조건을 잡을 수 있는건지 아니면 True / False 로 잡는건지 궁금합니다.
Begin
0값에 대한 처리
End
ELSE
Begin
1값에 대한 처리
End
End
GO
위 저장프로시저에서 @UserVal1 과 @UserVal2 값은 사용자가 지정하지 않았을 경우 (생략하고 SP를 실행한 경우)
NULL 값으로 처리되나요? 아님 '' 아무것도 없는 값으로 처리되나요?
만약 사용자가 지정한 값이 없을 경우 예외처리로 프로시저를 종료 시키고 싶은데요.
그 예외 처리에 대한 방법에 대해 조언을 구합니다.
그리고 @UserVal2의 데이터 타입이 bit로 되어 있는데 SP 구문에서는 이걸 0 또는 1로 사용이 되나요? 아님 True / False로
사용이 되나요?
ASP에서는 컬럼의 타입을 bit로 했더니 Ture와 False 값으로 처리가 되더라구요..
조언 부탁드립니다.
Comment 4
-
처리짱
2013.07.10 12:31
-
래리
2013.07.10 13:31
ISNULL() 함수를 이용해 체크하면 되는군요~
답변 감사합니다.
-
BIT는 0, 1, NULL 값을 가질 수 있는 데이타 형식입니다.
따라서 BIT가 전달되지 않았을 경우를 고려하려면 IF @BIT IS NULL 이라고 하시면 될 듯
ASP에서 TRUE나 FALSE로 처리가 되는 이유는 FALSE가 0 TRUE가 -1 이런식으로 처리 되기 때문일겁니다.
VISUAL BASIC 6.0으로 프로그램 할때는 FALSE가 0 TRUE가 -1 이었습니다. ASP는 잘...
그리고 예외가 생겼을때 PROC를 종료하는 방법은 RETURN문을 사용해도 되고
RAISERROR ('파라메타가 입력되지 않았습니다', 16, 0) 이런식으로 에러를 낸 후 RETURN 해도 되구요.
-
래리
2013.07.10 13:34
전달되지 않는 값일 경우 NULL 값으로 처리하면 되는군요..
PROC 종료 방법에 RETURN과 RAISERROR 처리가 있다는 조언 감사드립니다.
많은 도움이 되었습니다.
IF ISNULL(@UserVal1, '')='' or ISNULL(@UserVal2, 0)=''
IF ISNULL(@UserVal2, 0) = 0
0, 1로 체크 하면되고요..
ASP는 잘 안해봤는데 아마도 TRUE가 1로 FALSE가 0으로 정의 되어 있을거 같네요...