Как CONCAT запрос на обновление в процедуре - PullRequest
0 голосов
/ 17 ноября 2018

Я пытаюсь создать процедуру для обновления строки, когда ошибка исправлена.Вот как это выглядит:

DELIMITER $$
CREATE PROCEDURE bugFix (
    IN rid_in INT,
    IN fix_details_in VARCHAR (300)
) BEGIN
    SET @resolved_qry = CONCAT('UPDATE _bug_report SET resolved = 1 WHERE rid = ', rid_in);
    PREPARE stmt FROM @resolved_qry;
    EXECUTE stmt;
    DEALLOCATE PREPARE stmt;
    UPDATE _bug_report SET fix_details = CONCAT(fix_details, fix_details_in) WHERE rid = CONCAT(rid, rid_in);

END $$
DELIMITER ;

При изменении разрешенного типа на 1:

SET @resolved_qry = CONCAT('UPDATE _bug_report SET resolved = 1 WHERE rid = ', rid_in);
PREPARE stmt FROM @resolved_qry;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;

Работает нормально, однако при обновлении столбца fix_details для включения подробностейне работает:

UPDATE _bug_report SET fix_details = CONCAT(fix_details, fix_details_in) WHERE rid = CONCAT(rid, rid_in);

Вот как я это называю:

CALL bugFix(1, 'Hey, we fixed it');

Есть идеи, как это сделать, чтобы использовать значение fix_details_in?

1 Ответ

0 голосов
/ 17 ноября 2018

Почему вы используете динамический SQL?

DELIMITER $$
CREATE PROCEDURE bugFix (
    IN rid_in INT,
    IN fix_details_in VARCHAR (300)
) BEGIN
    UPDATE _bug_report
        SET resolved = 1,
            fix_details = CONCAT(fix_details, fix_details_in)
        WHERE rid = rid_in;
END $$
DELIMITER ;

Предположительно, "не работает" означает, что fix_details не обновляется.Это может быть потому, что ничто не соответствует:

WHERE rid = CONCAT(rid, rid_in)

Учитывая, что rid_in является целым числом, это всегда будет неудачей.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...