Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Не работает курсор / 6 сообщений из 6, страница 1 из 1
20.09.2014, 13:03:20
    #38752346
KSVSVK
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не работает курсор
Имеем:

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
create table operations(
Id integer unsigned not null auto_increment,
Investor integer unsigned not null default 0, #Номер инвестора (0 - управляющий)
Delta Dec(11, 2) not null,                    #Сумма операции
Data date default null,                       #Дата операции
primary key (Id));

delimiter !!

create trigger operations_insert
before insert on operations
for each row
begin
  declare D Date;

  declare Cur cursor for
    select Delta, Data from operations
    where Investor = 0;

  select Min(Data) from operations
  where Investor = new.Investor
  into D;

  open Cur;
  while D <= new.Data do

    fetch Cur into T, D;

  end while;
  close Cur;

end !!

delimiter ;

insert into operations(Investor, Delta) values(1, 1000);
insert into operations(Investor, Delta) values(2, 500);

insert into operations(Delta) values(100);

insert into operations(Investor, Delta) values(1, -1050);



После выполнения из консоли MySQL вижу:

Query OK, 1 row affected (0.00 sec)

Database changed
Query OK, 0 rows affected (0.13 sec)

Query OK, 0 rows affected (0.12 sec)

Query OK, 1 row affected (0.05 sec)

Query OK, 1 row affected (0.03 sec)

Query OK, 1 row affected (0.05 sec)

ERROR 1329 (02000): No data - zero rows fetched, selected, or processed
mysql>

При этом отдельно запрос, на котором построен курсор, строку возвращает нормально.
...
Рейтинг: 0 / 0
20.09.2014, 13:20:48
    #38752355
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не работает курсор
KSVSVKERROR 1329 (02000): No data - zero rows fetched, selected, or processed http://dev.mysql.com/doc/refman/5.5/en/fetch.html If no more rows are available, a No Data condition occurs with SQLSTATE value '02000'. To detect this condition, you can set up a handler for it (or for a NOT FOUND condition). For an example, see Section 13.6.6, “Cursors”.
...
Рейтинг: 0 / 0
20.09.2014, 16:52:27
    #38752461
KSVSVK
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не работает курсор
Прочитал эту ссылку, но в чем моя ошибка так и не понял.
...
Рейтинг: 0 / 0
20.09.2014, 16:59:13
    #38752464
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не работает курсор
KSVSVK,

у вас цикл не заканчивается, когда заканчиваются данные в курсоре.
...
Рейтинг: 0 / 0
21.09.2014, 09:49:26
    #38752814
alex564657498765453
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не работает курсор
KSVSVKПрочитал эту ссылку, но в чем моя ошибка так и не понял.

это ты так прочитал ссылку? при ошибке (02000): No data

If no more rows are available, a No Data condition occurs with SQLSTATE value '02000'. To detect this condition, you can set up a handler for it (or for a NOT FOUND condition). For an example, see Section 13.6.6, “Cursors”.


и таком тексте ты не понял, что для тедект этой ситуации ты можеш сет ап хандл для этого
для примера посмотреть по новой ссылке....

где пример

DECLARE cur1 CURSOR FOR SELECT id,data FROM test.t1;
DECLARE cur2 CURSOR FOR SELECT i FROM test.t2;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;

и не говори что ты не узнал фразу NOT FOUND

PS
ТС сдесь часто пробегают люди, которые думают, что раз они в интернете, то никто не увидит читал ли на самом деле человек или только смотрел на текст.
...
Рейтинг: 0 / 0
21.09.2014, 12:31:00
    #38752864
KSVSVK
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не работает курсор
Ошибка была где-то в идеологии моего подхода. Пока тупо скопировал подход, рекомендованный в приведенной ссылке на документацию. Заработало!
...
Рейтинг: 0 / 0
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Не работает курсор / 6 сообщений из 6, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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