Использование переменной в качестве имени столбца в хранимой процедуре - PullRequest
0 голосов
/ 08 апреля 2019
DELIMITER //
DROP PROCEDURE IF EXISTS `update_player`;
CREATE PROCEDURE `update_player`(p CHAR(50), t CHAR(3), stat CHAR(20), num INT)
BEGIN
SET @p = p;
SET @t = t;
SET @stat = stat;
SET @num = num;
SET @pc = CONCAT(
'SET SQL_SAFE_UPDATES=0;
UPDATE players
SET ', @stat, ' = (', @stat, ' + ', @num, ')
WHERE player_name = ''', @p, ''' AND Tm = ''', @t, ''';
SET SQL_SAFE_UPDATES=1;');
PREPARE stmt1 FROM @pc;
EXECUTE stmt1;
DEALLOCATE PREPARE stmt1;
END;
//

CALL update_player ('Alex Abrines', 'OKC', 'PTS', 10);

В настоящее время я создаю базу данных, которая будет отслеживать некоторые статистические данные NBA.Я пытаюсь сделать возможным обновить конкретную статистику для игрока, указав в качестве переменной столбец, который я хочу обновить.Когда я пытаюсь запустить это, я получаю

"Код ошибки: 1064. У вас есть ошибка в вашем синтаксисе SQL; проверьте руководство, соответствующее вашей версии сервера MySQL, для правильного синтаксиса для использования рядом с 'ОБНОВЛЕНИЕ игроков УСТАНОВИЛИ PTS = (PTS + 10) ГДЕ player_name = 'Alex Abrines' И Tm = 'в строке 2 ".

Я жестко закодировал этот запрос с этими значениями, и он работал.Поэтому я думаю, что проблема заключается в совместимости типов данных переменных.Спасибо за любую помощь.

...