2012-09-07 90 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