Возвращенный реф указатель не поддерживается - PullRequest
0 голосов
/ 06 января 2011

Я пытаюсь создать диаграмму в программном обеспечении для создания отчетов на приборной панели базы данных (Logi Info).У меня есть пакет PL SQL, который возвращает курсор ref с несколькими значениями, но кажется, что Logi Info не поддерживает это и выдает ошибку ORA-00904: "DASHBOARD_PACKAGE"."GETSUMMARYDATA": invalid identifier.Я думаю, что это или не поддерживается, или что мой вопрос не так.Это мой запрос:

select dashboard_package.getSummaryData (1, sysdate) из dual

Это как вызвать функцию, которая возвращает несколько значений?если да, есть ли решение этой проблемы (тип возвращаемого значения не поддерживается)?

Ответы [ 2 ]

0 голосов
/ 06 января 2011

Это ошибка компиляции.Ваша GETSUMMARYDATA() функция ссылается на недопустимое имя объекта, таблицу, столбец или что-то еще.Если вы используете динамический SQL, вы не получите эту ошибку компиляции до времени выполнения.

Итак, вам нужно кодировать источник вашей функции и найти вещь с неправильным названием.Номер строки, который идет с сообщением об ошибке, должен помочь вам здесь.

0 голосов
/ 06 января 2011

Если вы используете SQL * Plus, вам нужно использовать специальный синтаксис для доступа к REF CURSORS.

Это хорошо объяснено в руководстве по SQL * Plus:http://download.oracle.com/docs/cd/B19306_01/server.102/b14357/ch5.htm#sthref1127

В вашем случае это будет примерно так:

VARIABLE cv REFCURSOR
EXECUTE dashboard_package.getSummaryData(1, sysdate, :cv)
print cv

Обратите внимание, что положение переменной :cv зависит от определения вашей процедуры.Но так как вы не показали нам исходный код ...

Редактировать Чтобы охватить все возможные варианты (как упомянуто APC): если функция действительно возвращает курсор ref, то синтаксис немного отличается, как объяснено в следующей главе руководства:http://download.oracle.com/docs/cd/B19306_01/server.102/b14357/ch5.htm#sthref1128

VARIABLE cv REFCURSOR
execute :cv := dashboard_package.getSummaryData(1, sysdate);
print cv
...