powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / user defined functions как посчитать количество строк и вернуть цифру?
2 сообщений из 2, страница 1 из 1
user defined functions как посчитать количество строк и вернуть цифру?
    #39349523
Фотография alexnews
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пытаюсь посчитать сколько апдейтов происходит в функции, но как-то вошел в ступор, подскажите пожалуйста где ошибка?

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
CREATE FUNCTION `updateCompany`(company_new INT(11),company_old INT(11))
RETURNS INT

BEGIN

  set @totalUpdated := (SELECT count(*) FROM asset WHERE  owner_companies_id = company_old);
  set @totalReturn =  @totalReturn + @totalUpdated;
  UPDATE asset SET owner_companies_id = company_new WHERE owner_companies_id = company_old;
  set @totalUpdated := (SELECT count(*) FROM asset WHERE owner_companies_id = company_old);
  set @totalReturn =  @totalReturn + @totalUpdated;
  UPDATE asset SET manufacturer_companies_id = company_new WHERE manufacturer_companies_id = company_old;
  UPDATE asset SET owner_companies_id = company_new WHERE owner_companies_id = company_old;
  set @totalUpdated := (SELECT count(*) FROM asset WHERE distributor_companies_id = company_old);
  set @totalReturn =  @totalReturn + @totalUpdated;
  UPDATE asset SET distributor_companies_id = company_new WHERE distributor_companies_id = company_old;

RETURN @totalReturn;

END;;
DELIMITER ;
...
Рейтинг: 0 / 0
user defined functions как посчитать количество строк и вернуть цифру?
    #39349568
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alexnewsгде ошибка?Ну хотя бы в том, что запись, идентифицированная неким признаком, необязательно была обновлена.
Более-менее корректные данные можно получить, если запрашивать количество записей, соответствующих условию в запросе на обновление, до обновления и после него, и разность считать количеством обновлённых записей:
Код: sql
1.
2.
3.
4.
select @rows_before:=count(*) from table where (conditions)
update table set (changes) where (conditions)
select @rows_after:=count(*) from table where (conditions)
set @rows_changed:=@rows_before-@rows_after


Да и голова функции явно потеряна...
...
Рейтинг: 0 / 0
2 сообщений из 2, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / user defined functions как посчитать количество строк и вернуть цифру?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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