2015-05-04 39 views
0

我有相同的輸出格式有不同的報告和不同的表。因此,我實現了Oracle Piplined函數和碧玉報告>報表查詢下面Jasper Reports:java.sql.SQLException:ORA-22905:無法訪問非嵌套表項中的行

甲骨文寫存儲過程

FUNCTION VENDOR_TYPE(REPORT_TYPE IN VARCHAR2) RETURN T_VENDOR_TYPE pipelined 

C1 sys_refcursor; 

out_rec VENDOR_TYPE := VENDOR_TYPE(0, null, null, null); 
BEGIN 
IF REPORT_TYPE='1' THEN 
OPEN C1 FOR SELECT .....; 
ELSIF REPORT_TYPE='2' THEN 
OPEN C1 FOR SELECT .....; 
END IF; 
LOOP 
FETCH C1 INTO out_rec.VENDOR,out_rec.VENDOR_ID; 
EXIT WHEN C1%NOTFOUND; 
PIPE ROW(out_rec); 

END LOOP 
CLOSE C1; 
RETURN; 

END VENDOR_TYPE 

我的查詢是:

select * from table(VENDOR_TYPE('1')) - was running fine 

但我創造了兩個參數並更改查詢爲

select * from table(VENDOR_TYPE($P{report_no})) 

後,我已執行它給我的錯誤報告如下「值java.sql.SQLException:ORA-22905:無法從非嵌套表項訪問行」。你能幫我解決這個問題嗎?

回答

1

你可以嘗試CAST:

select * from table(CAST(VENDOR_TYPE($P{report_no}) AS VENDOR_TYPE)) 
+0

感謝您的working.Is有什麼缺點方面對於此實現。 – tech2504

+0

沒有我所知道的 – xionutz2k