2012-09-07 4 views
0

저는 DB에 익숙하지 않습니다. 나는 자바 개발자이며 SQL 함수와 아무 관련이 없다. 하지만 SQL 함수가 제대로 두꺼비이 SQL 함수를 실행하는 방법두꺼비를 사용하여 SQL 함수 실행

CREATE OR REPLACE FUNCTION RATELIMIT_OWN.Get_Logs (p_yyyymm VARCHAR2, p_numec NUMBER) 
RETURN LOG_RECORD_TABLE PIPELINED IS 

TYPE  ref0 IS REF CURSOR; 
cur0  ref0; 

out_rec  LOG_RECORD := log_record(NULL,NULL,NULL); 

BEGIN 

OPEN cur0 FOR 
    'SELECT eventid, errormsg, create_date from logs partition (LOGS_P' || p_yyyymm || ') where numec=:1' 
USING p_numec; 

    LOOP 
    FETCH cur0 INTO out_rec.eventid, out_rec.msg, out_rec.create_date; 
    EXIT WHEN cur0%NOTFOUND; 
    PIPE ROW(out_rec); 
    END LOOP; 
    CLOSE cur0; 

RETURN; 
END Get_Logs; 
/

데시벨에 여부를 실제로 실행 여부를 확인하기 위해 필요로하는 곳에 지금은 상황입니다. 나는

답변

2
FOE EXECUTING THE FUNCTION  
SELECT RATELIMIT_OWN.Get_Logs(....,...) FROM DUAL ; 

AND 
ORA-00904: MEAN COLUMN NAME IS NOT VALID PLSS CHECK THE COLUMN NAME 
3

테이블 반환 함수를 확인하려면 시도하십시오 일반 선택 쿼리의 출력과 같은 결과를 보려면 :

select * FROM table(RATELIMIT_OWN.Get_Logs('a', 1)); 
+0

내가 선택 오류 아래에 무엇입니까 * 테이블에서 (RATELIMIT_OWN.Get_Logs ('A', 1)) 라인에서 * 오류 1 ORA-02149 : 지정된 파티션을하지 않습니다 ORA-06512 존재 "RATELIMIT_OWN.GET_LOGS", 11 – Reddy

+0

이/확인 기능에 공급되는 매개 변수를 확인하시기 바랍니다 줄에서. 즉 'a'와 1을 입력하십시오. – TechDo

+0

귀하의 진술을 복사하여 실행합니다. 같은 오류 – Reddy

0

시도 :

select RATELIMIT_OWN.Get_Logs(...) from dual; 
+0

오류 : 라인 0 ORA-00904에서 듀얼 * 오류에서 선택 RATELIMIT_OWN.Get_Logs ('A', 1) : 유효하지 않은 식별자 – Reddy

+0

당신이 커서 cur0의 작품에서 당신의 선택, 확실합니까? – Parado

+0

나는 SQL에 대한 완전한 초보자이다. 커서 cur0이 무엇인지 모르겠습니다! ''로그 파티션에서 이벤트 ID,에서 errormsg, create_date SELECT (LOGS_P '|| p_yyyymm을 ||') ''작품이 쿼리는 내가 다시 – Reddy