У меня пакет работает нормально в версии 11g.
Но когда я развертываю тот же пакет в версии 19 c, поведение меняется.
PFB описание.
В спецификации пакета есть курсор и создан тип таблицы с курсором% rowtype. Наличие конвейерной функции, которая возвращает тип таблицы.
Использование функции с предложением таблицы
select * from table(function)
, чтобы возвращаемое значение могло действовать как таблица, и я мог прочитать результат с именами столбцов. .
В 11g функция возвращает заголовки столбцов, такие же, как имена столбцов курсора. Но в 19 c функция возвращает заголовки столбцов, такие как 'Attr_1, Attr_2, et c'.
Мне нужна функция для возврата заголовков столбцов в качестве имен столбцов курсора.
Примечание. Код нельзя передать, так как он очень чувствительный.
Образец: образец PFB.
Create table tb_test (id number, description varchar2 (50));
create or replace package pkg_test is
cursor cur_test is
select *
from tb_test
where 1=2;
type typ_cur_test is table of cur_test%rowtype;
function fn_test(p_rows in number) return typ_cur_test pipelined;
end;
create or replace package body pkg_test is
function fn_test(p_rows in number) return typ_cur_test pipelined as
l_tab typ_cur_test := cur_typ_test();
begin
for i in 1..p_rows loop l_tab.extend;
l_tab(i).Id := i;
l_tab(i). Description := 'test';
pipe roe(l_tab(i));
end loop;
return ;
end;
end pkg_test;
Select * from table(pkg_test.fn_test(2));
В 11g вышеупомянутый выбор дает заголовки столбцов как "id, description", но в 19 c я получаю как "ATTR_1, ATTR_2".
Пожалуйста, помогите.