2014-06-05 2 views
1

Oracle 11gR2 DB에서 오류없이 SQL Developer에서 컴파일 한 다음 함수가 있습니다. 이것은 나중에 빌드 될 테스 함수 일 뿐이지 만 그 목적은 텍스트 값과 카테고리 값을 가져 오는 것입니다. 텍스트는 Hello 일 수 있으며 category는 French이고 그 결과는 Bonjour 여야합니다.오류 코드 900을 제공하는 Oracle SQL 함수/함수 실행

create or replace FUNCTION testTranslate 
    (
     originaltext IN VARCHAR2, 
     fineoscategory IN VARCHAR2 DEFAULT NULL) 
    RETURN VARCHAR2 
    AS 
    translatedttext VARCHAR2(255) := ''; 
    BEGIN 
    SELECT distinct tti.translatedtex 
    INTO translatedttext 
    FROM toctranslationitem tti, 
     todomaininstance tdi 
    WHERE tti.translationty = fineoscategory 
    AND tti.originaltext = originaltext; 
    RETURN translatedttext; 
    END; 

필자는 SQL 개발자를 한번도 사용해 보지 못했지만 기능을 작성하는 데 익숙해졌습니다. 따라서 이것을 어떻게 실행해야할지 모르겠습니다.

내가 해봤 다음 testTranslate 프로 시저가 아니거나

을 정의되지

testTranslate('Hello', 'French'); 

execute testTranslate('Hello', 'French'); 

Begin 
    testTranslate('Hello', 'French'); 
end; 

처음 두 날 900 유효하지 않은 SQL 문을 오류주고, 세번째는 나에게 오류 6550을 제공합니다 I SQL 개발자에서 디버깅하려고하면 별도의 문제가 발생합니다. 스크립트가 실행되는 것 같지만 오류 메시지 1422 정확한 반입은 요청 된 행 수 이상을 리턴합니다. select 내에서 고유 한없이 실행될 때 함수 내에서 select 문은 꽤 많은 값을 반환하지만 distinct를 사용하면이 값을 반환하기 때문에 이것이 무엇을 내놓고 있는지 확실하지 않습니다.

모든 포인터?

답변

1

오라클의 기능은 select 키워드로 실행합니다. 따라서 다음과 같은 함수를 실행하십시오. -

SELECT testTranslate('Decision', 'Text') FROM DUAL; 

이 경우 도움이 될 수 있습니다.

+1

정답 모두 1 분 일찍 도착했습니다. :). – Predz

1

시도

SELECT testTranslate ('Hello', 'French') FROM DUAL;