Форум программистов, компьютерный форум, киберфорум
MySQL
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
3 / 3 / 1
Регистрация: 27.03.2010
Сообщений: 57
1

Ошибка в процедуре с курсором

18.05.2015, 00:26. Показов 582. Ответов 0
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Очень нужна ваша помощь. Мучаюсь целый день не могу найти ошибку.

Есть процедура:
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
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
DELIMITER $$
CREATE PROCEDURE friends_get(accessToken VARCHAR(32), OUT res mediumtext) 
MODIFIES SQL DATA
    BEGIN
        DECLARE idu INT DEFAULT 0;
        
        DECLARE COUNT INT DEFAULT 0;
 
        DECLARE DATE TIMESTAMP;
        DECLARE dist INT;
        DECLARE name VARCHAR(32);
        DECLARE img BOOLEAN;
        DECLARE id_friend INT;
        DECLARE id_list INT;
        
        DECLARE done INT DEFAULT FALSE;
        DECLARE req cursor FOR
            SELECT friends.id_friend, friends.id_list, account.name, account.img, getDist(coord.shir, coord.dolg, @shir1, @dolg1) AS dist, coord.date
                FROM (SELECT id_friend, id_list FROM friends WHERE _id = 2 AND id_friend IN(SELECT _id FROM friends WHERE id_friend = 2)) AS friends
                LEFT OUTER JOIN account
                ON friends.id_friend = account._id
                LEFT OUTER JOIN coord
                ON friends.id_friend = coord._id;
                -- order by friends.id_list asc, account.name asc;
         DECLARE continue handler FOR NOT found SET done = TRUE;
        
         SET idu = getIdByKey(accessToken);
         IF idu IS NULL
            THEN SET res = "{\"resCode\":10}";
        ELSE
            SELECT shir, dolg INTO @shir1, @dolg1 FROM coord WHERE _id = idu LIMIT 1;
            SET res = "{\"resCode\":1, \"users\":[";
            OPEN req;
            read_loop: loop
                fetch req INTO id_friend, id_list, name, img, dist, DATE;
                IF done THEN
                    leave read_loop;
                END IF;
                SET res = concat(res, "rgef");
                SET res = concat(res, "{"
                                "\"id_friend\":", COALESCE(id_friend, ""),
                                ",\"id_list\":", COALESCE(id_list, ""),
                                ",\"name\":\"", COALESCE(name, ""), "\"",
                                ",\"img\":\"", COALESCE(img, 0), "\"",
                                ",\"dist\":", COALESCE(dist, 0),
                                ",\"date\":\"", COALESCE(UNIX_TIMESTAMP() - UNIX_TIMESTAMP(DATE), ""), "\"",
                                "},");
                SET COUNT = COUNT + 1;
            END loop;
            close req;
            
            IF COUNT > 0 THEN SET res = SUBSTRING(res,1,CHAR_LENGTH(res)-1); END IF;
            SET res = concat(res, "]}");
        END IF;
    END;
$$
DELIMITER ;
И она возвращает результат {"resCode":1, "users":[]}, который говорит о том, что в курсоре(=> и в селекте) нету строк.

Но если отдельно выполнить селект, то он возвращает 2 строки.
SQL
1
2
3
4
5
6
7
SELECT friends.id_friend, friends.id_list, account.name, account.img, getDist(coord.shir, coord.dolg, 0.0, 0.0) AS dist, coord.date
                FROM (SELECT id_friend, id_list FROM friends WHERE _id = 2 AND id_friend IN(SELECT _id FROM friends WHERE id_friend = 2)) AS friends
                LEFT OUTER JOIN account
                ON friends.id_friend = account._id
                LEFT OUTER JOIN coord
                ON friends.id_friend = coord._id
                ORDER BY friends.id_list ASC, account.name ASC;
Помогите плиззз, диплом горит

Добавлено через 1 час 34 минуты
ОШИБКА НАЙДЕНА.
Имя переменной(id_friend) совпадало с именем поля.

Тема закрыта!
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
18.05.2015, 00:26
Ответы с готовыми решениями:

Проблема с курсором в хранимой процедуре
добрый день уважаемые. Нужна помощь. Написал хранимую процедуру для добавления записей в таблицу...

Исправить ошибку в хранимой процедуре при работе с курсором
Здравствуйте! есть таблица, заполненная след. образом Insert into Massage (, , , , ) values (42,...

Ошибка в процедуре
procedure TForm1.btn3Click(Sender: TObject); var q, i,g:Integer; begin...

Ошибка в процедуре
Добрый день, вечер, ночь. При проверке включения одного круга в другой программа вылетает, можете...

0
18.05.2015, 00:26
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
18.05.2015, 00:26
Помогаю со студенческими работами здесь

Ошибка в процедуре
Отлаживаю процедуру (делалась не мной). create or alter procedure INSRRATE_PERC ( ARTTYPEID_P...

Ошибка в процедуре
Создал простенькую процедуру. procedure spravka; var f: TextFile; line: string; begin...

Ошибка в процедуре
помогите найти ошибку (где-то в процедуре sum) unit lab16; interface type mas=arrayof integer;...

Ошибка в процедуре
Здравствуйте. Не могу понять, у меня почему то не работает функция proc в maple. Не могу понять что...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru