2013-06-19 2 views
1

Teradata에서 SQL 사용자 정의 함수를 호출하는 데 문제가 있습니다. 나는 다음과 같은 기능Teradata에서 UDF 호출

*REPLACE FUNCTION "twm_source"."TD_FN_CALC" (
     "func" CHARACTER(1) CHARACTER SET LATIN, 
     "a" INTEGER, 
     "b" INTEGER) 
    RETURNS INTEGER 
    SPECIFIC "td_fn_calc" 
    LANGUAGE SQL 
    CONTAINS SQL 
    DETERMINISTIC 
    CALLED ON NULL INPUT 
    SQL SECURITY DEFINER 
    COLLATION INVOKER 
    INLINE TYPE 1 
    RETURN CASE 
    WHEN func = 'A' 
    THEN A + B 
    WHEN func = 'S' 
    THEN A - B 
    WHEN func = 'M' 
    THEN A * B 
    ELSE A/B 
END;* 

을 만들었습니다하지만 테라 데이타 14.0 서버에 대해 다음 쿼리를 실행할 때

select "twm_source"."TD_FN_CALC"('M',3,8); 

이 오류를 제공

실패 [5589 : HY000] 기능 ' TD_FN_CALC '가 존재하지 않습니다.

아무도 나에게 도움이 될 수 없습니까? 도움을 주시면 감사하겠습니다.

답변

0

구문 분석기가 함수 매개 변수와 리터럴을 일치시킬 수 없을 때 오류 5589가 반환됩니다. 문자 리터럴 ('M')은 VARCHAR이고 "func"는 CHAR로 정의됩니다. 이 기능

select "twm_source"."TD_FN_CALC"('M' (CHAR(1)),3,8);

  • 변화 CHAR에서 VARCHAR로 정의를 호출 할 때

    • 명시 적 타입 변환을 추가

      는 두 가지 해결책이 있습니다.

      "func" VARCHAR(1) CHARACTER SET LATIN, 
      

    디터

  • +0

    이 정말 작동합니까 :-) CHAR 및 VARCHAR 입력 모두와 함께 작동! 조언 해 주셔서 대단히 감사합니다. – MaterialGirl