MYSQL процедура подготовки операторов, которая обновляет переменное число столбцов таблицы - PullRequest
0 голосов
/ 24 мая 2019

Мне нужно создать хранимую процедуру, которая использует подготовленные операторы, целью которых является обновление таблицы.Дело в том, что я заранее не знаю, какие столбцы таблицы будут обновлены.Это может быть один столбец, несколько или все из них.Я создал процедуру ниже, но столкнулся с проблемой, которую не могу понять:

CREATE DEFINER=`root`@`localhost` 
PROCEDURE `updateEntries`(  IN setcols varchar(200), 
                            IN column varchar(20), 
                            IN relation varchar(10), 
                            IN value varchar(15), 
                            IN setvalue varchar(100)
                         )
BEGIN
SET @sql = CONCAT('UPDATE table SET ',setcols,' WHERE ', column,' ', relation,' ?');
SET @setvalue = setvalue;
SET @value = value;
PREPARE stmt FROM @sql;
EXECUTE stmt USING @setvalue, @value;
DEALLOCATE PREPARE stmt;
END

Я могу легко вызвать процедуру, когда мне нужно обновить только один столбец, например: call updateEntries('column = ?','id', '>', 2, 'new_value'), потому что мой *Тогда 1005 * будет: UPDATE table SET column = ? WHERE id > ?; new_value будет присвоено @setvalue, а 2 будет назначено value, после чего выполняется каждый.

Однако я не могу понять, что следуетЯ делаю это, когда нужно обновить несколько столбцов, так как мне нужно хранить все эти новые значения для каждого столбца в переменных, которые EXECUTE будет использовать.Есть ли способ сохранить все новые значения в одну переменную, может быть, строку, и моя процедура выбрать значения из нее?Или какие у меня есть варианты?

...