语法上,MySQL和slq服务器还是有很大的区别。
看看mysql和sqlServer在动态SQL、游标和操作方面的区别。
===========动态SQL========================
在sqlServer上,动态SQL使用关键字execute或sp_executesql执行
但是,在Mysql中并非如此,所以让我们来看看Mysql中正在运行动态SQL
set@queryTest='select*fromtest ';
preparestmtfrom@queryTest;
执行脚本;
deallocatepreparesmtm;
===========mysql光标
游标还必须在mysql和SQLServer上执行五个步骤。
但是有区别。
1 .光标声明
2 .声明光标结束变量
3 .打开光标
4 .遍历光标
5 .关闭光标
具体例子如下。
值得注意的是,MySQL没有块这个概念。 也就是说,不能单独执行游标、循环和判断等语句
中选择所需的墙类型。 例如,如sp或函数,
分隔符$ $
createproceduresp_curosr ()
比根
declarecurcursorforselectidfromtestwhereid 100; -声明光标
dclarecontinuehandlerfornotfoundsetdone=1- -定义遍历结束变量
declarenidint;
opencur; 打开光标
fetchcurintonid; -读取光标
whiledone=0do
deletefromtestwhereid=nid;
fetchcurintonid;
结束车轮;
关闭Cur; -关闭光标
结束;
$$delimiter;
以上是MySQL的游标语法。
需要注意的地方:
1 .在1.MySQL中使用declare声明的标量必须位于对象的顶部。
2 .上述步骤2可由以下案文取代:
declarecontinuehandlerforsqlstate ' 02000 ' set done=1
大致意思是,在fetch无法读取数据时,将done设定为1,