Вызов хранимой процедуры Oracle из Spotfire

Я создал хранимую процедуру (SP) в Oracle с параметром OUT типа SYS_REFCURSOR, этот 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, можно предположить, что Spotfire "Information Designer поддерживает только процедуры, которые возвращают данные типа 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
/

person Rocy    schedule 19.03.2015    source источник
comment
Документ неубедительный - в нем упоминается (также известная как функция таблицы). Табличная функция в Oracle — это FUNCTION (не PROCEDURE), которая возвращает таблицу из ..., см. docs.oracle.com/cd/B19306_01/appdev.102/b14289/   -  person Frank Schmitt    schedule 26.03.2015


Ответы (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;
/   
person DaddyO    schedule 10.04.2015