【问题标题】:Calling Oracle Stored Procedure from Spotfire从 Spotfire 调用 Oracle 存储过程
【发布时间】:2015-05-22 14:21:04
【问题描述】:

我在 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
/

【问题讨论】:

标签: oracle11g tibco spotfire


【解决方案1】:

你可以试试这样的

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

【讨论】:

    猜你喜欢
    • 2011-04-25
    • 2012-01-27
    • 2017-05-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多