Mysql процедура выпуска, выхода или диапазона или нет данных - PullRequest
0 голосов
/ 05 апреля 2019

Я пытаюсь написать процедуру mysql для решения проблемы с моей базой данных.

В настоящее время есть две таблицы, связанные с этой проблемой:

pre_forum_thread - это таблица, которая хранитинформация о том, сколько ответов связано с постом.

pre_forum_post - это база данных сообщений.

Я написал следующую процедуру:

delimiter //
create procedure fix_position()
begin
    declare t int(10);
    declare b int(10);
    declare c int(10);
    DECLARE thread_id CURSOR FOR select tid from pre_forum_thread;
    open thread_id;
        fetch thread_id into t;
        SELECT count(*) into b FROM pre_forum_post WHERE tid=t;
        set c= b - 1;
        UPDATE pre_forum_thread SET replies= c WHERE tid=t;
        UPDATE pre_forum_thread SET maxposition=b WHERE tid=t;
    CLOSE thread_id;
end;//
DELIMITER ;

Но когда я вызываю эту процедуру, я получаю сообщение об ошибке:

    Out of range value for column 'replies' at row 1

И я меняю процедуру на

DECLARE thread_id CURSOR FOR select tid from pre_forum_thread;
    open thread_id;
        fetch thread_id into t;
        SELECT count(*) into b FROM pre_forum_post WHERE tid=t;
        UPDATE pre_forum_thread SET maxposition=b WHERE tid=t;
    CLOSE thread_id;

Я получил ошибку

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

Похоже, оба "обновления" не работают ... Кто-нибудь может помочь?

...