2014-11-25 2 views
0

Извините, если это было задано раньше, но я не смог найти его на сайте.pl/sql сохраненная функция ora-01002 извлечения из последовательности SIMPLE

Я написал следующую сохраненную функцию для Oracle с изменениями имен переменных, которые легче читать.

create or replace FUNCTION MY_FUNCTION 
(
    INPUT IN NUMBER 
, OUTPUT OUT SYS_REFCURSOR 
) RETURN SYS_REFCURSOR AS 
BEGIN 
    OPEN OUTPUT FOR 
    select * 
    FROM A_USER.A_VIEW myView 
    WHERE myView.ID = INPUT; 
    RETURN OUTPUT; 
END MY_FUNCTION; 

Таким образом, при запуске/тестировании в sql-разработчике вы получаете вкладку «выходные переменные». В этой вкладке есть два значения: < «Возвращаемое значение»>, которое возвращается функцией в традиционном смысле и «ВЫХОД», которая является значением выходной переменной OUTPUT. Они должны быть одинаковыми, но значение, которое я получаю для «OUTPUT», - это ошибка в заголовке, а < «Возвращаемое значение»> работает так, как должно.

Я новичок в pl/sql и никогда не изучал его в школе. Может ли кто-нибудь дать мне некоторое представление о том, что здесь происходит, и, может быть, решение? Спасибо Итан

+1

извините, но я не понимаю, почему вы возвращаете одно и то же значение дважды, если используете только «возвращаемое значение», вы разрешаете проблему? – Aramillo

+0

@ Aramillo Это общая проблема. Они оба должны работать. – user3439941

ответ

0
create or replace FUNCTION MY_FUNCTION 
(
    INPUT IN NUMBER 
, OUTPUT IN OUT SYS_REFCURSOR 
) RETURN SYS_REFCURSOR AS 
BEGIN 
    OPEN OUTPUT FOR 
    select * 
    FROM A_USER.A_VIEW myView 
    WHERE myView.ID = INPUT; 
    RETURN OUTPUT; 
END MY_FUNCTION; 

Изменить объявление выходной переменной (REFCURSOR). И объявите одно в вызывающей программе (независимо от того, что я тоже).

Смежные вопросы