mysql执行字符串

softfc 2010-11-12 10:50:40
想请教下
delimiter//
create procedure cps()
begin
declare table_user varchar(200) default 'user';
set strSql = concat('select * from ',table_user);
prepare a from strSql;
execute a;
end//
这个过程 有错误,我没写过过程,怎么处理执行字符串啊????还请各位高人指点。
...全文
249 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
softfc 2010-11-13
  • 打赏
  • 举报
回复
谢谢,我明白啦
ACMAIN_CHM 2010-11-12
  • 打赏
  • 举报
回复
[Quote]mysql变量不是不需要 @符号么?[/Quote]
是的,如果是过程内的局部变量不需要@,@开头的变量是SESSION变量。 而你用了prepare则需要使用SESSION级的变量,不能使用局部变量。

delimiter//
create procedure cps()
begin
declare table_user varchar(200) default 'user';
set @strSql = concat('select * from ',table_user);
prepare a from @strSql;
execute a;
end//
zuoxingyu 2010-11-12
  • 打赏
  • 举报
回复
mysql> PREPARE stmt1 FROM 'SELECT SQRT(POW(?,2) + POW(?,2)) AS hypotenuse';
mysql> SET @a = 3;
mysql> SET @b = 4;
mysql> EXECUTE stmt1 USING @a, @b;
+------------+
| hypotenuse |
+------------+
| 5 |
+------------+
mysql> DEALLOCATE PREPARE stmt1;


你的问题解决的办法,这样也行。
WWWWA 2010-11-12
  • 打赏
  • 举报
回复
呵呵,MYSQL语法要求
softfc 2010-11-12
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 wwwwa 的回复:]
在prepare中需要
[/Quote]
嗯 我试了 这样可以执行成功 谢谢你
不过 为什么在prepare中需要呢,不太明白
WWWWA 2010-11-12
  • 打赏
  • 举报
回复
在prepare中需要
lxq19851204 2010-11-12
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 softfc 的回复:]
mysql变量不是不需要 @符号么?
[/Quote]
需要的
softfc 2010-11-12
  • 打赏
  • 举报
回复
mysql变量不是不需要 @符号么?
WWWWA 2010-11-12
  • 打赏
  • 举报
回复
set @strSql = concat('select * from ',table_user);
prepare a from @strSql;
execute a;

56,675

社区成员

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

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