2015-03-19 7 views
1

Я создал хранимую процедуру (SP) в Oracle, у которой есть параметр OUT типа SYS_REFCURSOR, этот SP выполняется, как ожидается, в Oracle.Вызов хранимой процедуры Oracle из Spotfire

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 «Информация 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 
/
+0

Документ неубедителен - он упоминает «(также известный как функция таблицы)». Функция таблицы в Oracle - это «ФУНКЦИЯ» (не «ПРОЦЕДУРА»), которая возвращает таблицу ..., см. Http://docs.oracle.com/cd/B19306_01/appdev.102/b14289/dcitblfns.htm# CHDIIFEG –

ответ

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; 
/ 
Смежные вопросы