mysql存储过程使用接收到的参数做表名的问题

pimple 2010-04-02 12:41:38
DROP PROCEDURE IF EXISTS updateimage;
CREATE PROCEDURE updateimage
(
$id int,
$tablename varchar(20),
$img varchar(500)
)
BEGIN
IF $img !="" THEN
update $tablename set litpic=$img where aid=$id;
END IF;
END;

这一句有问题,
update $tablename set litpic=$img where aid=$id;
是 $tablename 的问题。。。
...全文
568 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
ACMAIN_CHM 2010-04-02
  • 打赏
  • 举报
回复
ACMAIN_CHM 2010-04-02
  • 打赏
  • 举报
回复
DROP PROCEDURE IF EXISTS updateimage;
CREATE PROCEDURE updateimage
(
$id int,
$tablename varchar(20),
$img varchar(500)
)
BEGIN
IF $img !="" THEN
set @sql = concat('update ',$tablename,' set litpic=\'',$img,'\' where aid=',$id);
PREPARE stmt1 FROM @sql;
EXECUTE stmt1;
DEALLOCATE PREPARE stmt1;
END IF;
END;
ACMAIN_CHM 2010-04-02
  • 打赏
  • 举报
回复
MYSQL不支持表名做为变量。
你需要通过
PREPARE
EXECUTE
DEALLOCATE PREPARE
来实现。

56,677

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧