powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Хранение произвольных формул расчета величин.
8 сообщений из 8, страница 1 из 1
Хранение произвольных формул расчета величин.
    #39496502
Всем доброго здравия!

Народ, подскажите, кто как подходит к вопросу хранения формул расчетов?
Интересуют подходы решения такого рода задач.
Смысл следующий - позволить пользователю создать свою формулу расчета некой величины по исходным данным.
Исходные данные, формулы и результат расчета - есть данные, хранимые в базе.
...
Рейтинг: 0 / 0
Хранение произвольных формул расчета величин.
    #39496553
ma1tus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
Name            Type            Nullable Default Comments                                                                              
--------------- --------------- -------- ------- ------------------------------------------------------------------------------------- 
FORMULA_ID      NUMBER(38)                                  
VAR_TYPE_ID     NUMBER(38)                       Тип переменной      
VAR_NAME        VARCHAR2(255)                    Имя переменной
FORMULA_NAME    VARCHAR2(255)                    Название              
FORMULA_BODY    CLOB                             Тело формулы
...
...
Рейтинг: 0 / 0
Хранение произвольных формул расчета величин.
    #39498242
AnSi_Sr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хорошая идея, при слабой реализации открывается большой простор для творчества.
Навскидку:
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
DECLARE
  vsuserformula   VARCHAR2 (255);
  vnresult        NUMBER;
BEGIN
  vsuserformula := '1 + 1';
 
  EXECUTE IMMEDIATE 'BEGIN :vnresult := ' || vsuserformula || '; END;'
    USING OUT vnresult;
 
  DBMS_OUTPUT.put_line (TO_CHAR (vnresult));
 
  vsuserformula :=
    'CASE WHEN DBMS_SESSION.IS_ROLE_ENABLED(''CONNECT'') = TRUE THEN 1 ELSE 0 END';
 
  EXECUTE IMMEDIATE 'BEGIN :vnresult := ' || vsuserformula || '; END;'
    USING OUT vnresult;
 
  DBMS_OUTPUT.put_line (TO_CHAR (vnresult));
END
...
Рейтинг: 0 / 0
Хранение произвольных формул расчета величин.
    #39498292
Фотография env
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AnSi_Sr,

Код: plsql
1.
vsuserformula := '1; execute immediate ''truncate table all_bank_user_operations drop storage''; '
...
Рейтинг: 0 / 0
Хранение произвольных формул расчета величин.
    #39502964
Sergei.Agalakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Позволить пользователю создавать PL/SQL функции или процедуры. Аккуратно ограничить доступ к данным. Пусть пишут свои формулы на PL/SQL.
...
Рейтинг: 0 / 0
Хранение произвольных формул расчета величин.
    #39503054
Азагаш
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в свое время парсил строку на скобки и операции инженерного калькулятора. записывал в таблицу последовательно с учетом простейших правил типа "умножение раньше сложения". бухгалтерам так и без синусов выше крыши будет.
...
Рейтинг: 0 / 0
Хранение произвольных формул расчета величин.
    #39503771
elunin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
простейший расчет можно разложить по шагам
например (5-3) * 8, раскладывается в пять записей.
5,3,8 - могут быть как константы введенные пользователем так и ссылками на проводки или документы (откуда можно взять суммы)

Таблица шагов расчета, & - ссылка на шаг расчета
ШАГ ЗНАК ЛЕВОГО ОПЕРАНДА ЛЕВЫЙ ОПЕРАНД МАТ ОПЕРАЦИЯ ЗНАК ПРАВОГО ОПЕРАНДА ПРАВЫЙ ОПЕРАНД1+52 +33 +84 +&1-+&2 5 +&4 * + &3
...
Рейтинг: 0 / 0
Хранение произвольных формул расчета величин.
    #39503885
eluninразложить по шагама зачем?
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Хранение произвольных формул расчета величин.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]