从Spotfire调用Oracle存储过程

时间:2015-03-19 12:51:53

标签: oracle11g tibco spotfire

我在Oracle中创建了一个存储过程(SP),它的OUT参数类型为SYS_REFCURSOR,此SP在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" Information Designer仅支持返回REF CURSOR"

类型数据的程序

有人可以帮我解决这个问题吗?

由于

解决:

建议将存储过程更改为Oracle中的函数确实解决了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
/

1 个答案:

答案 0 :(得分: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;
/