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