powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / javascript вместо хранимой процедуры :)
21 сообщений из 21, страница 1 из 1
javascript вместо хранимой процедуры :)
    #39284449
Юрий321
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
есть проект, расчеты в котором производятся в хранимках, такого вида.
Код: plsql
1.
DECLARE VARIABLE f1 float; Begin f1=ZKIZ;If (f1<0.5) THEN f1=0.5; STOIMOST=ZVR*KZ*f1*KTD*(kh1+kh2)*D*kb/100/9.33; END



нужно перетащить некоторые расчеты из проекта в другой, на джаве.

в новом не хочу заводить хранимки, хочу в таблице методик расчета завести поле под код расчета, при расчете брать этот код и используя javax.script расчитывать.

все нужные хранимки похожи, см. выше, выбросить блок declare, ключевые слова begin, end, then - готовый джаваскрипт код.

вопрос производительности не стоит.

так себе идея, или имеет право?
...
Рейтинг: 0 / 0
javascript вместо хранимой процедуры :)
    #39284454
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Юрий321так себе идея, или имеет право?
Идея хорошая, если от хранимок можно полностью отказаться. В противном случае придется поддерживать две версии одного кода.

Юрий321все нужные хранимки похожи, см. выше, выбросить блок declare, ключевые слова begin, end, then - готовый джаваскрипт код.
Теория с практикой зачастую сильно расходятся.
...
Рейтинг: 0 / 0
javascript вместо хранимой процедуры :)
    #39284456
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Юрий321в новом не хочу заводить хранимки, хочу
это у тебя такое ТЭО?
https://www.google.ru/search?q=тэо&ie=utf-8&oe=utf-8&gws_rd=cr&ei=fmKgV864MIW0sQGS-6mgCg
...
Рейтинг: 0 / 0
javascript вместо хранимой процедуры :)
    #39284459
Юрий321
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123Юрий321в новом не хочу заводить хранимки, хочу
это у тебя такое ТЭО?
https://www.google.ru/search?q=тэо&ie=utf-8&oe=utf-8&gws_rd=cr&ei=fmKgV864MIW0sQGS-6mgCg

это у меня непонимание, зачем считать простую арифметику хранимками.
в делфи в 2000 году может быть не было средств для вычисления простых формул с подстановкой переменных, сейчас с этим проблем нет.
зачем тащить сложный и запутаный способ в новое, если можно сделать намного проще.
...
Рейтинг: 0 / 0
javascript вместо хранимой процедуры :)
    #39284463
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Юрий321в делфи в 2000 году может быть не было средств для вычисления простых формул с подстановкой переменных, сейчас с этим проблем нет.
зачем тащить сложный и запутаный способ в новое, если можно сделать намного проще.
вот и обосновывал бы свою идею как положено.
А то повествование: Прсонулся - встал - а не переписать ли мне на другой ЯП всю ИС?
...
Рейтинг: 0 / 0
javascript вместо хранимой процедуры :)
    #39284465
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Юрий321зачем тащить сложный и запутаный способ в новое, если можно сделать намного проще.as is to be
Покажи как проще.
...
Рейтинг: 0 / 0
javascript вместо хранимой процедуры :)
    #39284467
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Юрий321зачем считать простую арифметику хранимками
ближе к данным. Накладные расходы меньше.
...
Рейтинг: 0 / 0
javascript вместо хранимой процедуры :)
    #39284470
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Юрий321,
упс.
В Оракле Java прямо в СУБД есть - дерзай. Переписывай.
...
Рейтинг: 0 / 0
javascript вместо хранимой процедуры :)
    #39284490
Юрий321
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123Покажи как проще.

а давай

надо вычислить результат по формуле
Код: java
1.
2.
3.
4.
5.
int calc(int count, int price)
{
    if(count < 5) count = 5;
    return count * price;
}



сейчас делается так:
есть таблица "название методики вычисления; имя методики",
и таблица "имя методики;имя переменной; номер переменной в порядке переменных для подачи на хранимку".
имя методики == имя хранимой процедуры.
по списку имен переменных генерируется список компонентов на форме, список введенного сортируется в нужный порядок,
выполняется хранимка "execute procedure " + name + "(" + vars + ")";
в хранимке формула (код) вычисления.

можно сделать таблицу "название методики; формула (код); список переменных через разделитель"
сгенерить форму по именам переменных, подать введенное в
engine.eval(формула, new SimpleBindings(переменные));
и все.

таблица под порядок переменных не нужна, хранимка не нужна.
...
Рейтинг: 0 / 0
javascript вместо хранимой процедуры :)
    #39284492
Юрий321
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123Юрий321зачем считать простую арифметику хранимками
ближе к данным. Накладные расходы меньше.

Код: plsql
1.
DECLARE VARIABLE f1 float; Begin f1=ZKIZ;If (f1<0.5) THEN f1=0.5; STOIMOST=ZVR*KZ*f1*KTD*(kh1+kh2)*D*kb/100/9.33; END
...
Рейтинг: 0 / 0
javascript вместо хранимой процедуры :)
    #39284499
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Юрий321, это прэлестно... как раз недавно мы обсуждали JavaScript, тип double и деньги...
...
Рейтинг: 0 / 0
javascript вместо хранимой процедуры :)
    #39284501
Юрий321
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonкак раз недавно мы обсуждали JavaScript, тип double и деньги...
ага, в эту сторону я как раз не подумал.
где почитать обсуждения?
...
Рейтинг: 0 / 0
javascript вместо хранимой процедуры :)
    #39284504
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Юрий321по списку имен переменных генерируется список компонентов на форме
про таблицу методик:
- методика меняется в зав-ти от чего?
Юрий321о списку имен переменных генерируется список компонентов на форме
- это ГУИ?
...
Рейтинг: 0 / 0
javascript вместо хранимой процедуры :)
    #39284509
Юрий321
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторPetro123Юрий321по списку имен переменных генерируется список компонентов на форме
про таблицу методик:
- методика меняется в зав-ти от чего?

например от времени года. форма двухэтапная, юзер выбрал зиму, на следующем окошке - список контролов для зимы

авторЮрий321о списку имен переменных генерируется список компонентов на форме
- это ГУИ?
ага
...
Рейтинг: 0 / 0
javascript вместо хранимой процедуры :)
    #39284516
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Юрий321,
если ГУИ, то:
- приётся тебе всё ВИ до конца описывать.
- ГУИ требует чтобы были данные и настройки пользователей. Т.е. те самые таблицы.
........
В JS нет контроля типов. Поэтому пиши вместо хранимки на Java - нет проблем.
...
Рейтинг: 0 / 0
javascript вместо хранимой процедуры :)
    #39284524
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Юрий321можно сделать таблицу "название методики; формула (код); список переменных через разделитель"
сгенерить форму по именам переменных, подать введенное в
engine.eval(формула, new SimpleBindings(переменные));
и все.
таблица под порядок переменных не нужна, хранимка не нужна.
можно вместо таблицы методик добавлять наследников абстрактного класса
class Методика{ }
тогда
"таблица под порядок переменных не нужна, хранимка не нужна."
...
Рейтинг: 0 / 0
javascript вместо хранимой процедуры :)
    #39284542
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Юрий321maytonкак раз недавно мы обсуждали JavaScript, тип double и деньги...
ага, в эту сторону я как раз не подумал.
где почитать обсуждения?
http://www.sql.ru/forum/1224258-8/inline-extern-iz-biblioteki-kak-pravilno-deklarirovat-implementirovat
Все читать не надо. Обратите внимание на финансы и особенности double.
...
Рейтинг: 0 / 0
javascript вместо хранимой процедуры :)
    #39285275
Юрий321
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
блин :))

Код: javascript
1.
2.
3.
4.
5.
zap = 1.00
zao = 1.00
zc = 1.00

{stoimost=(zao+zc*zap*0.01)/9.33;};


result = NaN

при этом движок в браузере считает нормально.
...
Рейтинг: 0 / 0
javascript вместо хранимой процедуры :)
    #39285299
scf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Юрий321,

Предлагаю начать собственно с требований к вашей бизнес-логике. Поправьте, если я что-то упустил или что-то лишнее написал:

- переиспользуемость между проектами, написанными на разных языках
- документируемость - не должно быть проблем понять, как использовать нужный функционал (что вызвать, с какими параметрами и т.п.)
- тестируемость - на бизнес-логику должны быть написаны имеющие бизнес-смысл тест-кейсы, составленные теми, кто понимает собственно бизнес и смысл этой бизнес-логики
- версионируемость - должна быть возможность выкатывать разные приложения с разными версиями логики (работает - не трогай!) и откатывать бизнес-логику на предыдущую версию в случае проблем
- пригодность для денежных вычислений. бизнес требует, чтобы на выходе суммы получались "как у них на калькуляторе", что означает достаточное кол-во знаков после запятой и правильные режимы округления. double может преподнести ряд сюрпризов
- быстродействие (возможны варианты, но время исполнения вменяемого кол-ва кода должно быть единицы миллисекунд)
- типизация и поддержка IDE - автокомплит, отлов части ошибок на этапе компиляции, интегрированная среда разработки

На мой взгляд, лучше всего этим требованиям удовлетворяет отдельная библиотека, написанная на ЯП, с которым возможна интеграция. К примеру:
- С/C++ DLL (возможно, под разные платформы)
- на интерпретируемом языке, под который можно найти интеграцию под разные платформы (питон, яваскрипт, может что-то еще)
- java + сетевой API для не-JVM языков
...
Рейтинг: 0 / 0
javascript вместо хранимой процедуры :)
    #39285326
Юрий321
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Юрий321блин :))

Код: javascript
1.
2.
3.
4.
5.
zap = 1.00
zao = 1.00
zc = 1.00

{stoimost=(zao+zc*zap*0.01)/9.33;};


result = NaN

при этом движок в браузере считает нормально.

а происходит следующее, если вдруг кому:

Код: java
1.
2.
3.
4.
5.
ScriptEngine engine = new ScriptEngineManager().getEngineByName("JavaScript");
Map<String, Object> vars = new HashMap<>();
vars.put("x", "2.0"); // тут строка
vars.put("y", "1"); // и тут строка
engine.eval("x + y", new SimpleBindings(vars));


ловишь NaN

а вот если в переменные подаешь числом:
Код: java
1.
2.
3.
4.
5.
ScriptEngine engine = new ScriptEngineManager().getEngineByName("JavaScript");
Map<String, Object> vars = new HashMap<>();
vars.put("x", 2.0); // тут число
vars.put("y", 1); // и тут число
engine.eval("x + y", new SimpleBindings(vars));


то считает.

хотя казалось бы :)
...
Рейтинг: 0 / 0
javascript вместо хранимой процедуры :)
    #39285332
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Юрий321,
да. На JS пишут так).
Уже передумал на JS финансы писать?
...
Рейтинг: 0 / 0
21 сообщений из 21, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / javascript вместо хранимой процедуры :)
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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