powered by simpleCommunicator - 2.0.44     © 2025 Programmizd 02
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / Как узнать сколько "row affected"?
4 сообщений из 4, страница 1 из 1
Как узнать сколько "row affected"?
    #32218684
Moses
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Hi All!
Выполняется UPDATE-statement на 300тыс. записях.
Необходимо узнать сколько записей действительно изменилось.
DB2 v7.2 - 8.1
...
Рейтинг: 0 / 0
Как узнать сколько "row affected"?
    #32219132
Victor Metelitsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
RTFM про CLI.

Хотя проще, наверное, воспользоваться GET DIAGNOSTICS внутри compound-выражения (see SQL Reference)? Но это в 8.1, я не помню про 7.x.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
CREATE PROCEDURE sqlprocg (IN deptnbr VARCHAR( 3 ))
   LANGUAGE SQL
   BEGIN
      DECLARE SQLSTATE CHAR( 5 );
      DECLARE rcount INTEGER;
      UPDATE CORPDATA.PROJECT
         SET PRSTAFF = PRSTAFF +  1 . 5 
         WHERE DEPTNO = deptnbr;
      GET DIAGNOSTICS rcount = ROW_COUNT;
 -- At this point, rcount contains the number of rows that were updated.
 
...
   END
...
Рейтинг: 0 / 0
Как узнать сколько "row affected"?
    #32219150
Moses
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Про GET DIAGNOSTICS спасибо, действительно очень удобно. Проверю у себя. На самом деле я сам все больше перехожу на хранимые процедуры, хоть считается что в DB2 они не нужны.
А вот как это делает Quest Central?
Он ведь по динамическим запросам выдает сколько записей изменилось.
Вешал мониторы и следил за ним - за одно обращение(транзакция из одного запроса) он получает и результат и, видимо где-то в результате, это самое количество. Кого смотреть, и как ловить? В SQLCA?

PS: про мануал я в курсе
...
Рейтинг: 0 / 0
Как узнать сколько "row affected"?
    #32219257
Фотография NewYear
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
RTFM!!!!

SQLERRD(2) sqlerrd SQLERR(2) INTEGER Contains the number of rows in a result
when the cursor position is after the last
(that is, when SQLCODE is equal to +100).
SQLERRD(2) can also contain an internal
code.

SQLERRD(3) sqlerrd SQLERR(3) INTEGER Contains the number of rows affected after
INSERT, UPDATE, and DELETE (but not
deleted as a result of CASCADE delete).
0 if the SQL statement fails, indicating that
changes made in executing the statement
canceled. Set to -1 for a mass delete from
table in a segmented table space.
For SQLCODES -911 and -913, SQLERRD(
contains the reason code for the timeout
deadlock .
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / Как узнать сколько "row affected"?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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