mysql中的动态sql语句使用
在mysql5中,提供了存储过程,是我们可以方便的利用sql语句实现一些比较复杂的数据库操作,sqlserver中,很多人都是用过execute语句来执行动态的sql语句,其实mysql也提供类似的功能。
语句生成的过程其实就是一个简单的字符串操作,利用mysql内置的concat函数来将多个字符串进行连接,生成语句,例如:set @sqlstr=concat('delete from ',tablename,' where id=',id);
该语句将多个条件进行组合生成一个删除记录的语句
下面要做的就是 prepare executesql from @sqltext;
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) |