2015-03-19 184 views
1

我在Oracle中創建了一個具有類型爲SYS_REFCURSOR的OUT參數的存儲過程(SP),該SP在Oracle中按預期方式執行。從Spotfire調用Oracle存儲過程

CREATE OR REPLACE PROCEDURE SCHEMA.MyProc 
(
    p_Code IN varchar2, 
    p_FromDate IN Timestamp, 
    p_ToDate IN timestamp, 
    p_ResultSet OUT SYS_REFCURSOR 
) 
AS 
BEGIN 
    OPEN p_ResultSet FOR 
    -- Obtain required data 

END SF_EquipmentStatusHistory; 
/ 

然而,當在組織中的Spotfire傢伙試圖在Spotfire中創建新的程序,並引用我的SP,Spotfire中抱怨說,它不能有OUT參數。

閱讀此鏈接Spotfire Procedure Overview,似乎表明Spotfire中「信息設計只支持返回類型REF CURSOR的數據程序」

有人可以請幫助,我怎麼解決這個問題?

感謝

解決:

至於建議將存儲過程中甲骨文功能並解決Spotfire中的問題,抱怨OUT參數:

CREATE OR REPLACE FUNCTION SCHEMA.MyFunc 
(
    p_Equipment_code IN varchar2, 
    p_FromDate IN Timestamp, 
    p_ToDate in timestamp 
) 
return SYS_REFCURSOR 
AS p_ResultSet sys_refcursor; 
BEGIN 
    OPEN p_ResultSet FOR 
    -- Obtain required data 
return p_ResultSet; 
END MyFunc 
/
+0

文檔不確定 - 它提到「(也稱爲表函數)」。 Oracle中的表函數是一個'FUNCTION'(而不是'PROCEDURE'),它返回一個...的表格,參見http://docs.oracle.com/cd/B19306_01/appdev.102/b14289/dcitblfns.htm# CHDIIFEG – 2015-03-26 09:19:10

回答

0

,你可以嘗試的東西像這樣

CREATE OR REPLACE FUNCTION SCHEMA.MyFuctRC 
(
    p_Code IN varchar2, 
    p_FromDate IN Timestamp, 
    p_ToDate IN timestamp 
) 
Return sys_refcursor 

AS 
my_rc sys_refcursor ; 
BEGIN 
    OPEN my_rc FOR 
    -- your select statement 

    return my_rc; 

END MyFuctRC; 
/