我正在尝试编写一个存储过程来更新参数中指定的表的字段。我在@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
答案 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