2010-01-19 2 views
2

내 ERP 데이터베이스는 null이 허용되지 않는 datetime 필드를 사용합니다. 그러나, datetime이 없을 때 ''를 입력하고 '1900-01-01 00 : 00 : 00.000'을 값으로 반환합니다.저장 프로 시저와 오류 처리를위한 사용자 정의 함수

Datetime 필드에서만 Date를 제거하는 동안 1900 개의 날짜를 표시하지 않으려합니다. 나는 그것을 할 수있는 다음과 같은 UDF 생성 :

CREATE FUNCTION ExtractDate(@DirtyDate DATETIME) 
    RETURNS VARCHAR(10) AS 
    BEGIN 
    DECLARE @CleanDate VARCHAR(10) 
    SELECT @CleanDate = 
      CASE 
       WHEN @DirtyDate = '' THEN '' 
       ELSE CONVERT(VARCHAR(10), @DirtyDate, 101) 
      END 

    RETURN @CleanDate 
    END 

이 작동을하지만 사용자가 날짜 필드가 아닌 다른 뭔가를 사용하는 경우 오류 처리를 추가하고 싶었다. 인터넷 검색을 한 후, 나는 이것이 UDF에서 가능하지 않다는 것을 알아 냈다.

그러나 저장 프로 시저로이 코드를 작성하면 select 문에서 호출 할 수 있습니까? 누군가 올바른 방향으로 나를 가리킬 수 있습니까?

답변

2

아니요, select 문에서 저장된 proc을 호출 할 수 없습니다.

오류 처리를 포함하려는 야망에 박수를 보냅니다.하지만 가장 좋은 방법은 앱 측에서 확인하는 것입니다. 사람들이 날짜가 아닌 입력란에 기능을 사용하도록 허용하지 마십시오.

관련 문제