1

我在 Oracle 中创建了一个具有 SYS_REFCURSOR 类型的 OUT 参数的存储过程 (SP),该 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“信息设计器仅支持返回 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
/
4

1 回答 1

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;
/   
于 2015-04-10T19:18:01.293 回答