powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / Java и идеальные ХП
11 сообщений из 36, страница 2 из 2
Java и идеальные ХП
    #35913702
Если нужен статический SQL для Java-кода, то нужно смотреть в сторону SQLJ, или новомодного pureQuery.
...
Рейтинг: 0 / 0
Java и идеальные ХП
    #35913994
Николаха
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Mark Barinstein,

Вроде понял что так можно...
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
p1: begin
DECLARE ppp INTEGER DEFAULT  0 ;

IF (param> 10 ) THEN SET ppp =  0 ;
IF (param> 20 ) THEN SET ppp =  1 ;
.............................................
p2: begin
DECLARE cur CURSOR FOR
     select t.* from t1 t where t.fff=ppp;
OPEN cur;
.............................................
end p2;
.............................................
end p1;
...
Рейтинг: 0 / 0
Java и идеальные ХП
    #35914002
Николаха
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Mark Barinstein,

СПАСИБО ЗА ЛИНК!!!
...
Рейтинг: 0 / 0
Java и идеальные ХП
    #35914072
Mark Barinstein
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
НиколахаMark Barinstein,

Вроде понял что так можно...
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
p1: begin
DECLARE ppp INTEGER DEFAULT  0 ;

IF (param> 10 ) THEN SET ppp =  0 ;
IF (param> 20 ) THEN SET ppp =  1 ;
.............................................
p2: begin
DECLARE cur CURSOR FOR
     select t.* from t1 t where t.fff=ppp;
OPEN cur;
.............................................
end p2;
.............................................
end p1;
Так можно:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
p1: begin
DECLARE ppp INTEGER DEFAULT  0 ;
DECLARE cur CURSOR FOR
     select t.* from t1 t where t.fff=ppp;
.............................................
IF (param> 10 ) THEN SET ppp =  0 ;
IF (param> 20 ) THEN SET ppp =  1 ;
.............................................
OPEN cur;
.............................................
end p1;
Т.е. смысл в том, что вас никто не обязывает делать open сразу за declare cursor.
И переменная ppp не обязана содержать актуальное значение на момент declare cursor.
...
Рейтинг: 0 / 0
Java и идеальные ХП
    #35914194
Николаха
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Mark BarinsteinНиколахаMark Barinstein,

Вроде понял что так можно...
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
p1: begin
DECLARE ppp INTEGER DEFAULT  0 ;

IF (param> 10 ) THEN SET ppp =  0 ;
IF (param> 20 ) THEN SET ppp =  1 ;
.............................................
p2: begin
DECLARE cur CURSOR FOR
     select t.* from t1 t where t.fff=ppp;
OPEN cur;
.............................................
end p2;
.............................................
end p1;
Так можно:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
p1: begin
DECLARE ppp INTEGER DEFAULT  0 ;
DECLARE cur CURSOR FOR
     select t.* from t1 t where t.fff=ppp;
.............................................
IF (param> 10 ) THEN SET ppp =  0 ;
IF (param> 20 ) THEN SET ppp =  1 ;
.............................................
OPEN cur;
.............................................
end p1;
Т.е. смысл в том, что вас никто не обязывает делать open сразу за declare cursor.
И переменная ppp не обязана содержать актуальное значение на момент declare cursor.

Т.е. когда я с делаю OPEN то этот курсор заполнится с уже присвоенной переменной ppp??
...
Рейтинг: 0 / 0
Java и идеальные ХП
    #35914278
Mark Barinstein
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
НиколахаMark BarinsteinТак можно:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
p1: begin
DECLARE ppp INTEGER DEFAULT  0 ;
DECLARE cur CURSOR FOR
     select t.* from t1 t where t.fff=ppp;
.............................................
IF (param> 10 ) THEN SET ppp =  0 ;
IF (param> 20 ) THEN SET ppp =  1 ;
.............................................
OPEN cur;
.............................................
end p1;
Т.е. смысл в том, что вас никто не обязывает делать open сразу за declare cursor.
И переменная ppp не обязана содержать актуальное значение на момент declare cursor.

Т.е. когда я с делаю OPEN то этот курсор заполнится с уже присвоенной переменной ppp??Да.
...
Рейтинг: 0 / 0
Java и идеальные ХП
    #35914282
Semen Popov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Евгений ХабаровЕсли нужен статический SQL для Java-кода, то нужно смотреть в сторону SQLJ, или новомодного pureQuery.Спасибо. То есть вообще можно отказаться от ХП? Даже в реализации отчётов, где обычно использовались ХП? Преимущества? Я думал, что реализация на уровне СУБД является самой оптимальной (конечно, зависит от самой реализации, кода). Но вот для того примера - отчёта, который формируется в ХП. Будем считать, что код идеальный. Если отказаться от ХП и вынести код в SQLJ, то этот вариант будет оптимальнее?
...
Рейтинг: 0 / 0
Java и идеальные ХП
    #35914467
Semen PopovЕвгений ХабаровЕсли нужен статический SQL для Java-кода, то нужно смотреть в сторону SQLJ, или новомодного pureQuery.Спасибо. То есть вообще можно отказаться от ХП? Даже в реализации отчётов, где обычно использовались ХП? Преимущества? Я думал, что реализация на уровне СУБД является самой оптимальной (конечно, зависит от самой реализации, кода). Но вот для того примера - отчёта, который формируется в ХП. Будем считать, что код идеальный. Если отказаться от ХП и вынести код в SQLJ, то этот вариант будет оптимальнее?
Отказаться от использования ХП можно, вопрос нужно ли.
Оптимальнее нужно по какому критерию или критериям?
Точек зрения на оптимальность всегда больше одной.
Если в процедуре кроме самих запросов "зашить" вычисления (бизнес-логику), то эта логика эта будет выполняться на стороне сервера и использовать его вычислительные ресурсы. Это может быть как плюсом, так и минусом.
Если необходимо "закрыть" исходные таблицы БД от прямого доступа, то для этого понадобятся хранимые процедуры и/или VIEW.
Еще один параметр, сколько изменений понадобится при изменении алгоритма расчета?
В случае хранимой - это изменение самой хранимой внутри БД. В случае клиентского ПО, которое напрямую работает с БД - изменение каждой копии этого ПО. В случае когда клиентом БД является сервер приложений - изменение одного приложения внутри сервера. И т.д.
Что является критериями оптимальности в Вашем случае?
...
Рейтинг: 0 / 0
Java и идеальные ХП
    #35914565
Semen Popov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Евгений Хабаров
Отказаться от использования ХП можно, вопрос нужно ли.
Оптимальнее нужно по какому критерию или критериям?
Точек зрения на оптимальность всегда больше одной.
Если в процедуре кроме самих запросов "зашить" вычисления (бизнес-логику), то эта логика эта будет выполняться на стороне сервера и использовать его вычислительные ресурсы. Это может быть как плюсом, так и минусом.
Если необходимо "закрыть" исходные таблицы БД от прямого доступа, то для этого понадобятся хранимые процедуры и/или VIEW.
Еще один параметр, сколько изменений понадобится при изменении алгоритма расчета?
В случае хранимой - это изменение самой хранимой внутри БД. В случае клиентского ПО, которое напрямую работает с БД - изменение каждой копии этого ПО. В случае когда клиентом БД является сервер приложений - изменение одного приложения внутри сервера. И т.д.
Что является критериями оптимальности в Вашем случае?То, что Вы описали имеет место быть и для моих критериев. В моём случае приложение крутится под WAS 6, который является клиентом базы. Но я бы хотел подойти к вопросу с общей точки разработки ПО под DB2. Наверняка существуют основные моменты, которые являются законами в разработке приложений под СУБД DB2. Например, в производительности, скорости выполнения операций. Что лучше - SQL-скрипт вставки записи или вызов созданной на уровне бд ХП или тот же ORM или SQLJ? Или, например, критерий уменьшения сетевого трафика. Что создаст меньший трафик - выполнение приложением SQL-скрипта по вставке записи или выполнение ХП вставки записи? И т.д. У меня есть знакомые разработчики, которые придерживаются мнения, чтобы всю касаемую данных логику хранить в DB2. Она сама всё оптимизирует.
...
Рейтинг: 0 / 0
Java и идеальные ХП
    #35914883
Semen PopovЕвгений Хабаров
Отказаться от использования ХП можно, вопрос нужно ли.
Оптимальнее нужно по какому критерию или критериям?
Точек зрения на оптимальность всегда больше одной.
Если в процедуре кроме самих запросов "зашить" вычисления (бизнес-логику), то эта логика эта будет выполняться на стороне сервера и использовать его вычислительные ресурсы. Это может быть как плюсом, так и минусом.
Если необходимо "закрыть" исходные таблицы БД от прямого доступа, то для этого понадобятся хранимые процедуры и/или VIEW.
Еще один параметр, сколько изменений понадобится при изменении алгоритма расчета?
В случае хранимой - это изменение самой хранимой внутри БД. В случае клиентского ПО, которое напрямую работает с БД - изменение каждой копии этого ПО. В случае когда клиентом БД является сервер приложений - изменение одного приложения внутри сервера. И т.д.
Что является критериями оптимальности в Вашем случае?То, что Вы описали имеет место быть и для моих критериев. В моём случае приложение крутится под WAS 6, который является клиентом базы. Но я бы хотел подойти к вопросу с общей точки разработки ПО под DB2. Наверняка существуют основные моменты, которые являются законами в разработке приложений под СУБД DB2. Например, в производительности, скорости выполнения операций. Что лучше - SQL-скрипт вставки записи или вызов созданной на уровне бд ХП или тот же ORM или SQLJ? Или, например, критерий уменьшения сетевого трафика. Что создаст меньший трафик - выполнение приложением SQL-скрипта по вставке записи или выполнение ХП вставки записи? И т.д. У меня есть знакомые разработчики, которые придерживаются мнения, чтобы всю касаемую данных логику хранить в DB2. Она сама всё оптимизирует.
It depends .....
Пример 1:
1. Вызов хранимой это скорее всего динамический SQL-запрос. Считаем затраты на его Prepare, bind-параметров, плюс возможно преобразование типов параметров.
2. Внутри хранимой программный код должен эти параметры получить, выполнить программную логику и заложенные в эту хранимую SQL-операторы.
Если внутри хранимой простой INSERT, то в таком случае использование хранимой будет оправдано в случае, если хранимая выполняет логику по проверке входных параметров на допустимость и/или скрывает от потребителя внутренние таблицы БД.
Иначе использование промежуточной хранимой даст только доп.задержку в обработке. Т.е. INSERT из прикладной программы (а если еще и пакетный, то тем более) скорее всего сработает быстрее.
Пример 2:
Требуется обработать миллион записей исходной таблицы (или таблиц) для формирования итоговой выборки на сотню записей. Причем одним SQL-оператором желаемую выборку получить невозможно, т.е. требуется чтение каждой записи. В таком случае хранимая процедура даст выигрыш по сравнению с сетевым приложением, т.к. не нужно будет гонять большой объем трафика по сети.
Однако, если приложение исполняется там же где и БД, то выигрыш хранимой будет не столь очевиден.
Пример 3.
Динамический и статический SQL.
Если правильно пользоваться динамическим SQL, то он будет почти не медленнее чем статический SQL и будет использовать имеющуюся на момент Prepare статистику.
Однако в динамическом SQL выше шанс нарваться на ошибку во время исполнения SQL, если допустить ошибку в синтаксисе запроса или в типе переменных. С другой стороны большая гибкость.
Статический SQL должен давать прирост производительности за счет пропуска фаз Prepare, проверки прав, построения плана доступа и привязки переменных. Однако "свежая" статистика будет использоваться только после операции REBIND пакета. Т.е. затрат на администрирование кода чуть больше.
Разнесение бизнес-логики между СУБД и сервером приложений может иметь смысл хотя бы по соображениям балансировки нагрузки. Если вся логика будет выполняться в СУБД, то сервер приложений (вернее сервер на котором он выполняется) будет "простаивать". Может быть и наоборот.
Еще раз, It depends......... ;-)
...
Рейтинг: 0 / 0
Java и идеальные ХП
    #35915950
Semen Popov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Евгений ХабаровIt depends .....Спасибо. Буду иметь в виду.
...
Рейтинг: 0 / 0
11 сообщений из 36, страница 2 из 2
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / Java и идеальные ХП
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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