2009-06-30 2 views
1

의 RAISERROR 메시지 서식 지정 저장 프로 시저에서 매개 변수가 null 또는 1 미만인지 테스트하고, 그렇다면 친숙한 메시지와 매개 변수 값으로 오류를 발생 시키려고합니다. 내가 다시하고 싶은 무엇SYBASE ASE 12.5

IF @ID IS NULL OR @ID <= 0 
BEGIN 
    RAISERROR 27001 'ID is ?????. ID cannot be null or less then zero.' 
    RETURN 27001 
END 

중 하나입니다 : 여기

내 코드입니다. "ID가 0 ID가 null 또는 제로 적은 다음이 될 수 없다"

또는 "ID가 null입니다 .ID는 null 또는 0보다 작거나 같을 수 없습니다."

나는 VARCHAR를 구축하고이 같은 오류 인상 시도했습니다

". sysmessages의 카탈로그에 존재하지 않는 RAISERROR에 전달 메시지 번호 27001를,"

RAISERROR 27001 @message 

을하지만 오류 을 생산

답변

2

NULL의 @ID 값은 빈 문자열로 쓰지만 작동합니다.

IF @ID IS NULL OR @ID <= 0 
BEGIN 

    DECLARE @msg varchar(250) 
    SELECT @msg = 'ID is ' + Convert(varchar(15), @ID) + '. Value cannot be null or less then zero' 

    RAISERROR 27001 @msg 
    RETURN 27001 
END 
+0

이것은 나를위한 메시지로 P를 반환합니다 ... – Charbel

2

문제는 이것이다 : 당신은 sp_addmessage 호출하여 데이터베이스로 사용자 지정 오류 번호를 추가해야합니다

sp_addmessage 27001, "ID is %1. ID cannot be null or less than zero." 

위가 같은 그런 다음 나 같은 (당신이 원하는 경우, RAISERROR를 호출 할 수 있습니다

RAISERROR 27001, @ID 

편집 : (주소 코멘트)

첫째, 당신이 있다면 그렇게 경사 광주는) sp_addmessage에 정의 된 메시지 문자열을 사용 성 메시지로 위치 인수 27001 등록 :

sp_addmessage 27001, "%1" 

둘째, 당신은 당신이 sp_addmessage를 사용하여 등록 한 기본 메시지를 표시하도록 강제하지 않는; 예를 들어, 이것은 기본 메시지가 무엇인지에 관계없이 별도의 메시지를 표시해야합니다.

RAISERROR 27001 @message 
+0

이렇게해도 작동하지만 모든 procs에서 27000 - 27050의 범위를 다시 사용합니다. 즉, proc의 27001은 prob의 b가 27001 일 필요는 없습니다. 따라서 sp_addmessage는 우리에게 옵션이 아닙니다. – JamesWampler

+0

실제로, sp_addmessage는 옵션입니다 (편집 방법을 보시려면 여기를 참고하십시오). 그리고 내가 아는 한, 커스텀 에러 번호를 올리고 싶다면 반드시해야합니다. – hythlodayr