Я создал пользовательские типы.У него есть функции-члены.Почти все используют одну и ту же функцию пакета report_pkg.get_data
.И я делаю некоторые другие вещи.
create or replace type report_type is object
(
globalvar1 number(15),
globalvar2 varchar2(8),
member function getA return varchar2,
member function getB return varchar2,
member function getC return varchar2,
member function getD return varchar2
)
В функции-член я использую ту же функцию.
member function getA return varchar2 is
rc tb_example%rowtype;
begin
rc := report_pkg.get_data(globalvar1 , globalvar2);
**Other stuff**
return rc.column1;
end;
member function getB return varchar2 is
rc tb_example%rowtype;
begin
rc := report_pkg.get_data(globalvar1 , globalvar2);
**Other stuff**
return rc.column2;
end;
member function getC return varchar2 is
rc tb_example%rowtype;
begin
rc := report_pkg.get_data(globalvar1 , globalvar2);
**Other stuff**
return rc.column3;
end;
member function getD return varchar2 is
rc tb_example%rowtype;
begin
rc := report_pkg.get_data(globalvar1 , globalvar2);
**Other stuff**
return rc.column4;
end;
Когда я запускаю приведенный ниже код в цикле;
report_tab := report_type(globalvar1, globalvar2);
insert into tb_report(columna, columnb, columnc, columnd)
values (report_tab.getA, report_tab.getB, report_tab.getC, report_tab.getD);
В конце концов, я запускаю report_pkg.get_data
для каждой функции-члена.Это вызывает проблемы с производительностью.Как я могу улучшить производительность и как правильно использовать функции-члены определенного пользователем типа?
Спасибо.