从 Spotfire 调用 Oracle 存储过程

Calling Oracle Stored Procedure from Spotfire

我在 Oracle 中创建了一个存储过程 (SP),它具有 SYS_REFCURSOR 类型的 OUT 参数,此 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 参数。

阅读此 link Spotfire Procedure Overview,似乎暗示 Spotfire "Information Designer only support procedures that return data of the type 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
/

你可以尝试这样的事情

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;
/