2010-07-15 14 views

답변

5

제 생각에는 함수 시작 부분에서 NULL 값을 확인하고 예외를 발생시키는 RAISERROR (아니요, 오타가 아닙니다)을 사용하는 것이 좋습니다.편집 : 당신이 옵션 2.

또한 지정하는 옵션이 함께 가야 할 것이다, 그래서 불행하게도,이, UDF를 작동하지 않습니다 당신이 당신의 함수를 만들고 "NULL 입력에 NULL을 반환한다." 이 플래그가 지정되면 함수는 NULL 중 하나가 NULL 인 경우 NULL을 반환합니다. 역설적이긴하지만 원하는 것일 수 있습니다. 은 MSDN CREATE FUNCTION 문서에서

는 (그들은, 자신의 페이지에 앵커가 없기 때문에 인용 bleh) :

RETURNS NULL ON NULL INPUT | CALLED ON NULL INPUT

Specifies the OnNULLCall attribute of a scalar-valued function. If not specified, CALLED ON NULL INPUT is implied by default. This means that the function body executes even if NULL is passed as an argument.

If RETURNS NULL ON NULL INPUT is specified in a CLR function, it indicates that SQL Server can return NULL when any of the arguments it receives is NULL, without actually invoking the body of the function. If the method of a CLR function specified in already has a custom attribute that indicates RETURNS NULL ON NULL INPUT, but the CREATE FUNCTION statement indicates CALLED ON NULL INPUT, the CREATE FUNCTION statement takes precedence. The OnNULLCall attribute cannot be specified for CLR table-valued functions.

이 다소 도움이되기를 바랍니다, 나는 그것이 불필요하게 혼란 동의 않습니다.

+0

감사합니다. 매우 상세합니다. – Llyle

+0

대단히 환영합니다. 사실, 당신이 물어볼 때까지 나는 그 사실을 잘 모르고 있었고, 그것에 대한 연구를 한 적이있어서 감사합니다. :) – Faisal

+1

나는 똑같은 것을 제안하려고했는데 (RAISERROR), 내 로컬 SQL dev에 그것을 시험해보기로 결정했다. TVF (테이블 값 함수)에서는 RAISERROR를 사용할 수 없습니다. '부작용 연산자'RAISERROR '가 함수 내에서 잘못 사용되었습니다.'라는 오류가 발생합니다. –

관련 문제