Форум программистов, компьютерный форум, киберфорум
Oracle
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
Безумец
48 / 48 / 12
Регистрация: 06.02.2014
Сообщений: 214
1

Объектные типы, статические функции и процедуры

10.05.2017, 14:42. Показов 956. Ответов 3
Метки нет (Все метки)

Здравствуйте,
oracle 11g ee,
есть несколько пакетов (~10) c процедурами расчета/заполнения таблиц с агрегатами(по сути кубов). Спецификация каждого пакета имеет такой вид:

Oracle 11 SQL
1
2
3
4
5
6
7
8
9
10
11
12
13
CREATE OR REPLACE PACKAGE PKG_NAME
AS
   
   FUNCTION fun_recalc_estimate (in_col_estimate IN type_col_estimates, in_val_fact IN NUMBER, in_val_appg IN NUMBER)
      RETURN NUMBER
      DETERMINISTIC;
 
   PROCEDURE proc_recalc_rule (in_indicator_id     IN NUMBER,
                               in_indicator_type   IN NUMBER,
                               in_fact_id          IN NUMBER,
                               in_rule_id          IN NUMBER,
                               in_date             IN DATE);
END PKG_NAME;
Функция используется в SQL запросе. Сейчас пакеты содержат много одинакового кода (проверка параметров, логирование, обработка ошибок). Хотелось бы использовать объектные типы и статические функции/процедуры для обхода дублирования кода. Пытаюсь:

Oracle 11 SQL
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
CREATE OR REPLACE TYPE type_recalc_rule AS OBJECT
(
   --Без атрибутов тип не создать, клятый Оракл
   atr_test VARCHAR2 (1),
   STATIC FUNCTION fun_recalc_estimate
      RETURN NUMBER,
   STATIC PROCEDURE proc_recalc_rule
)
   NOT INSTANTIABLE NOT FINAL;
 
 
CREATE OR REPLACE TYPE BODY type_recalc_rule
AS
   STATIC FUNCTION fun_recalc_estimate
      RETURN NUMBER
   IS
   BEGIN
      RETURN NULL;
   END fun_recalc_estimate;
 
 
 
   STATIC PROCEDURE proc_recalc_rule
   IS
   BEGIN
      NULL;
   END proc_recalc_rule;
END;
Позже буду наследоваться от этого класса, но Оракл не позволяет использовать статические функции в SQL-запросах:
SQL
1
SELECT type_recalc_rule.fun_recalc_estimate FROM dual;
В документации не нашел как можно реализовать. Может кто использовал и как-то обходил это?
Кто и как избавляется от дублирования кода в подобных ситуациях?
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
10.05.2017, 14:42
Ответы с готовыми решениями:

Разработать модуль, который будет содержать заданные типы, процедуры и функции
3. Разработать модуль, который будет содержать заданные типы, процедуры и функции. Разработать...

Разработать модуль, который будет содержать заданные типы, процедуры и функции
Разработать модуль, который будет содержать заданные типы, процедуры и функции. Разработать...

Статические динамические типы(типизация)
Доброго времени суток! Хочу задать вопрос, но конкретизировать боюсь не смогу. Вопрос по...

Параметризованный класс. Встроенные арифметические статические или динамические типы данных
Ошибка 1 error C4700: использована неинициализированная локальная переменная "d" Ошибка 6 error...

3
339 / 235 / 113
Регистрация: 12.05.2016
Сообщений: 642
12.05.2017, 17:56 2
А что мешает вынести общий код в отдельный пакет и дёргать его во всех остальных десяти?
0
Безумец
48 / 48 / 12
Регистрация: 06.02.2014
Сообщений: 214
12.05.2017, 20:41  [ТС] 3
Цитата Сообщение от Anvano Посмотреть сообщение
код в отдельный пакет и дёргать его
Да это понятно, сферу применения объектной составляющей хотелось бы для себя определить.
0
339 / 235 / 113
Регистрация: 12.05.2016
Сообщений: 642
14.05.2017, 14:14 4
SQL
1
SELECT type_recalc_rule.fun_recalc_estimate() FROM dual;
Скобки добавьте
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
14.05.2017, 14:14

Каковы в x64 типы параметров оконной процедуры?
По-прежнему HWND, UINT, WPARAM, LPARAM?

Статические функции..?
Как вытащить все необходимые мне поля из таблицы с использованием стат. ф-ии типа: SELECT field1,...

Статические функции
Добрый день. Пример из Лафорте, ООП: // statfunc.cpp // Статические функции и ID объектов...

Статические функции
Начинаю изучать С++, написал код, но не хочет работать, подскажите, в чем может быть ошибка. class...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru