Chinaunix首页 | 论坛 | 博客
  • 博客访问: 88665
  • 博文数量: 10
  • 博客积分: 1615
  • 博客等级: 上尉
  • 技术积分: 410
  • 用 户 组: 普通用户
  • 注册时间: 2005-02-16 15:03
文章分类

全部博文(10)

文章存档

2010年(1)

2009年(5)

2008年(4)

我的朋友
最近访客

分类:

2008-09-23 22:38:53

mysql中的动态sql语句使用
 
在mysql5中,提供了存储过程,是我们可以方便的利用sql语句实现一些比较复杂的数据库操作,sqlserver中,很多人都是用过execute语句来执行动态的sql语句,其实mysql也提供类似的功能。
 
语句生成的过程其实就是一个简单的字符串操作,利用mysql内置的concat函数来将多个字符串进行连接,生成语句,例如:set @sqlstr=concat('delete from ',tablename,' where id=',id);
该语句将多个条件进行组合生成一个删除记录的语句
 
下面要做的就是 prepare executesql from @sqltext;
 execute executesql;
prepare的功能是预处理,其实在这里我只是简单的使用了prepare 的功能,也就是把@sqltext中的语句交executesql,execute不用说了,就是执行。
 
 
 
根据手册描述,通过prepare可以实现参数的传递,例如
 
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;
PREPARE语句将带有参数的一个字符串传递到stmt1中进行预处理, 'SELECT SQRT(POW(?,2) + POW(?,2)) AS hypotenuse'中的?号其实代表了一个参数,使用EXECUTE stmt1 USING @a, @b;就可以方便的向动态sql语句传递参数,而不用做字符串连接操作了。
阅读(1322) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~