Получение значения из SYS_REFCURSOR - PullRequest
0 голосов
/ 23 января 2019

Можно ли получить значение из SYS_REFCURSOR как text / varchar?

Я пытаюсь получить данные, которые возвращают SYS_REFCURSOR в мой бэкэнд:

await getManager().query("SELECT function(" + 6 + ", " + 2016 + ", " + 1 + ") AS VAL FROM DUAL")
                .then(
                    res => {
                        data = res;
                    },
                );

Какой результат

запрос не выполнен: функция SELECT (6, 2016, 1) AS VAL FROM DUAL

ошибка: ошибка: NJS-010: неподдерживаемый тип данных 2021 в столбце 1

Это данные от выполнения функции, которые я пытаюсь преобразовать в text / varchar: enter image description here

Я пытался заменить значение возвращаемых данных из RETURN SYS_REFCURSOR AS TOTAL SYS_REFCURSOR; в RETURN VARCHAR2 AS TOTAL SYS_REFCURSOR;

В РЕЗУЛЬТАТЕ:

Ошибка (4,3): PL / SQL: оператор игнорируется

Ошибка (4,10): PLS-00382: выражение имеет неправильный тип

И я попробовал использовать:

SELECT TO_CHAR(function(6, 2016, 1)) AS VAL FROM DUAL

Возвращение:

ORA-00932: несовместимые типы данных: ожидаемое число получило курсор 00932. 00000 - «несовместимые типы данных: ожидаемый% s получил% s» * Причина:
* Действие: Ошибка в строке: 1 столбец: 16

SELECT (function (6, 2016, 1).to_string) AS VAL FROM DUAL

Возвращение:

ORA-22806: не объект или REF 22806. 00000 - «не объект или REF» * Причина: была сделана попытка извлечь атрибут из элемента, который ни объект, ни REF. * Действие: используйте тип объекта или элемент типа REF и повторите операцию. Ошибка в строке: 1 столбец: 9

Если я использую select нормально (SELECT function(7,2016,1) AS VAL FROM DUAL), он вернет:

{<JAN=253715.1141718013773106197897789054005074,FEB=252780.5864509605662285136501516683518706,MAR=261291.5266890630832400149309443822321762,APR=263633.6245857185899367279300994275384152,MAY=265071.1905483186913056649500151469251742,JUN=257069.4087403598971722365038560411311054,JUL=265553.8694992412746585735963581183611533,AUG=267297.9990835497174278295402474415762945,SEP=263157.8947368421052631578947368421052632,OCT=269272.1957224188336667179566087090321588,NOV=268178.6836257758026204888514290092713202,DEC=258055.00258055002580550025805500258055>,}

Несколько ссылок, которые я посетил и попробовал:

В данный момент я использую запрос хранимой процедуры для получения данных. Но возможно ли получить значение из SYS_REFCURSOR как text / varchar?

...