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