powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / ХП
11 сообщений из 11, страница 1 из 1
ХП
    #35013629
a1ekseyv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть маленький вопрос. Допустим есть простая ХП.

create procedure pass.dummy()
dynamic result sets 1
begin
declare rows_count int;
declare c1 cursor with return for
select * from db2alex.T_PEOPLE where date_born = '1975-09-05';
open c1;
INSERT INTO DB2ALEX.T_MAGAZINE_LOG (DATE_ENTER, USER_ENTER, TEXT, ROWS_COUNT)
VALUES (current_TIMESTAMP, SESSION_USER, 'DUMMY1', rows_count);
End

Как в ней посчитать кол-во строк которое вернет Select. И как управлять курсором. Например поставить его на нужную стоку.
...
Рейтинг: 0 / 0
ХП
    #35013729
Mark Barinstein
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Для чего вам "поставить на нужную строку" курсор надо?
Объясните подробнее, как вы потом хотите использовать курсор, после того как вы его позиционировали его на нужную строку?
...
Рейтинг: 0 / 0
ХП
    #35013823
a1ekseyv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я не нашел как подсчитать кол-во строк при select. Думал пробежаться по курсору подсчитать количество строк и записать лог. И стал искать как его поставить на первую строку после подсчета. Конечно можно открыть второй курсор и записать там:

select count(*) as rows_cownt from db2alex.T_PEOPLE where date_born = '1975-09-05';

Но запрос максимально упрощен для примера, а на самом деле состоит из кучи связанных таблиц. По этому два раза вызывать не хочется.
...
Рейтинг: 0 / 0
ХП
    #35014027
Mark Barinstein
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть 2 варианта:
1. Использовать временную таблицу такой же структуры, как и запрос:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
declare c1 cursor with return for select * from session.T_PEOPLE;
...
declare global temporary table session.T_PEOPLE as
(select * from db2alex.T_PEOPLE where date_born = '1975-09-05')
definition only with replace:

insert into session.T_PEOPLE
select * from db2alex.T_PEOPLE where date_born = '1975-09-05';
GET DIAGNOSTICS rows_count = ROW_COUNT;
open c1;
2.
Код: plaintext
1.
2.
3.
declare c1 cursor with return for 
with t as (select * from db2alex.T_PEOPLE where date_born = '1975-09-05')
select t.*, (select count( 1 ) from t) rows_count
from t;
...
Рейтинг: 0 / 0
ХП
    #35014053
TORT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mark Barinstein при компиляции первого варианта DB2 будет ругаться, что не найдена таблица, объявленная в курсоре...
...
Рейтинг: 0 / 0
ХП
    #35014108
Mark Barinstein
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
TORTMark Barinstein при компиляции первого варианта DB2 будет ругаться, что не найдена таблица, объявленная в курсоре...Будет ругаться, если перед компиляцией в этой же сессии не выполнить декларацию этой таблицы.
Но ведь никто не мешает это сделать перед компиляцией.
...
Рейтинг: 0 / 0
ХП
    #35014192
a1ekseyv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Огромное спасибо.
...
Рейтинг: 0 / 0
ХП
    #35014809
TORT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mark Barinstein, надо будет попробовать... Сам чего-то не додумался до этого...
...
Рейтинг: 0 / 0
ХП
    #35014838
TORT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И все равно... А если временная таблица не with replace?
...
Рейтинг: 0 / 0
ХП
    #35015061
Mark Barinstein
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
TORTИ все равно... А если временная таблица не with replace?Не важно, как с какими опциями эту таблицу перед компиляцией декларировать.
Компилятору нужны только метаданные таблицы.
...
Рейтинг: 0 / 0
ХП
    #35015092
TORT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Млин, если бы это было так, то значительно бы упорядочило код... Но что-то у меня не получается пока...
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / ХП
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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