2012-09-07 93 views
0

我对DB很新。我是java开发人员,与SQL函数无关。 但现在我在一个情况下,我需要检查一个SQL功能是否得到执行正确的DB或不使用toad执行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; 
/

如何蟾蜍执行此SQL功能。我想看到的结果像正常的选择查询输出

回答

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

我得到以下错误 选择* FROM表(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

错误:从双 * 错误 选择RATELIMIT_OWN.Get_Logs( 'A',1)线0 ORA-00904:无效的标识符 – Reddy

+0

确定,从光标cur0作品的选择? – Parado

+0

我是SQL的新手。我不知道什么是光标cur0! 让我知道要执行什么声明,我会做,并发回 – Reddy