Правильное использование функций-членов типа Oracle - PullRequest
0 голосов
/ 04 июня 2018

Я создал пользовательские типы.У него есть функции-члены.Почти все используют одну и ту же функцию пакета 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 для каждой функции-члена.Это вызывает проблемы с производительностью.Как я могу улучшить производительность и как правильно использовать функции-члены определенного пользователем типа?

Спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...