mysql准备语句给出错误

时间:2015-01-13 14:43:19

标签: mysql

我正在尝试编写一个存储过程来更新参数中指定的表的字段。我在@sql statment.please help

中遇到语法错误
 create procedure new_upd1(ind int(3),attribute varchar(30),pk int(11),new_value varchar(30))
begin
    set @att=attribute;
    set @primk=pk;
    set @updated=new_value;

    if ind=1 then
        set @sql='update department set ?=? where departmentid=?';
        prepare stmt from @sql;
        execute stmt using @att,@updated,@primk;
        deallocate prepare stmt;
    end if;
end

1 个答案:

答案 0 :(得分:2)

参数不适用于列名或表名,仅适用于值。这样做:

create procedure new_upd1(ind int(3),attribute varchar(30),pk int(11),new_value varchar(30))
begin
    set @att=attribute;
    set @primk=pk;
    set @updated=new_value;

    if ind=1 then
        set @sql=CONCAT('update department set ', @att, '=? where departmentid=?;');
        prepare stmt from @sql;
        execute stmt using @updated,@primk;
        deallocate prepare stmt;
    end if;
end