SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 22.12.2011 17:05:11

Symbiot
Участник
Зарегистрирован: 21.12.2011
Сообщений: 8

Хранимые процедуры. UPDATE

Приветствую!

Интересует такой вопрос, можно ли использовать переменные, передаваемые в процедуру, в виде полей таблицы?
Пример:


CREATE PROCEDURE `changeField` (IN p_id INT, IN value VARCHAR(50), IN field VARCHAR(20))
    BEGIN
        UPDATE table SET field = value WHERE id = p_id LIMIT 1;
    END
 


Или с помощью подготовленных выражений:


CREATE PROCEDURE `changeField` (IN p_id INT, IN value VARCHAR(50), IN field VARCHAR(20))
    BEGIN
        PREPARE upd FROM 'UPDATE table SET ? = value WHERE id = p_id LIMIT 1';
        EXECUTE upd USING @field;
    END
 


Оба способа выдают ошибку.
Может существует другой способ?

Подскажите, пожалуйста.

Отредактированно Symbiot (22.12.2011 17:05:56)

Неактивен

 

#2 22.12.2011 19:04:04

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: Хранимые процедуры. UPDATE

PREPARE ... FROM CONCAT('UPDATE table SET `', p_id, '` = ...');

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson