Конференция "Базы" » Как получить Rows affected в хранимой процедуре? [IB XE3]
 
  • noobone (28.03.14 13:47) [0]
    В процедуре выполняется запрос, надо узнать сколько он строк обработал?

    А как это сделать при использовании execute statement?
  • Inovet © (28.03.14 13:58) [1]
    Видимо, вернуть количество в выходных параметрах?
    Видимо, так же, как и что-то другое?
  • noobone (28.03.14 14:20) [2]
    Может я не точно выразился...

    В теле процедуры есть запросы INSERT, UPDATE, DELETE, алгоритм работы этой процедуры зависит от количества обработанных ими записей.

    Нужна SQL констукция, аналогичная IBQuery.Affectedrecord в Delphi.
  • Inovet © (28.03.14 14:39) [3]
    ROW_COUNT посмотри.
  • noobone (28.03.14 14:50) [4]
    Смотрел. Увы, только для FB и только для select.
  • Труп Васи Доброго © (31.03.14 09:50) [5]

    > алгоритм работы этой процедуры зависит от количества обработанных
    > ими записей

    Чем подробнее пояснишь, тем правильнее получишь ответ. Может тебе и процедура эта не нужна, а всё дело триггерами обойдётся.
  • noobone (31.03.14 14:49) [6]
    Необходимо провести "чистку базы" -  массовую обработку записей: что-то удалить, добавить, изменить. Часть из них несет за собой каскадное изменение других данных.

    Загружать все скрипт (или большими частями) на исполнение нельзя - тормозится работа пользователей, мелкими кусками - много возни.
    В базе есть признак, по которому можно судить о том, что база "свободна", и можно загрузить часть изменений.

    Пока план следующий: Загрузить все скрипты в таблицу, по расписанию выполнять проверку на "свободность", запускать процедуру и вносить часть изменений.

    Если найдется более простой вариант - будет здорово.

    PS За ночь изменения нельзя прогнать.
  • Styx (31.03.14 20:36) [7]

    > Пока план следующий: Загрузить все скрипты в таблицу, по
    > расписанию выполнять проверку на "свободность", запускать
    > процедуру и вносить часть изменений.

    Какой-то это нехороший план.
    Но, в любом случае, это никак не поясняет

    > В теле процедуры есть запросы INSERT, UPDATE, DELETE, алгоритм
    > работы этой процедуры зависит от количества обработанных
    > ими записей.
    >
  • noobone (01.04.14 10:09) [8]
    Запросы выполняются с помощью execute statement

    Если есть другие варианты реализации  - с удовольствием рассмотрю :)
 
Конференция "Базы" » Как получить Rows affected в хранимой процедуре? [IB XE3]
Есть новые Нет новых   [118639   +41][b:0][p:0]