mysql的游标怎么使用

小潘seo 重庆小潘seo博客和你一起学习SEO知识,共同分享SEO优化~

个人觉得就是一个cursor,就是一个标识,用来标识数据取到什么地方了,你也可以把它理解成数组中的下标.

使用游标(cursor)

1.声明游标:DECLARE cursor_name CURSOR FOR select_statement

这个语句声明一个游标,也可以在子程序中定义多个游标,但是一个块中的每一个游标必须有唯一的名字,声明游标后也是单条操作的,但是不能用SELECT语句不能有INTO子句.

2.游标OPEN语句:OPEN cursor_name

这个语句打开先前声明的游标.

3.游标FETCH语句:FETCH cursor_name INTO var_name [,var_name] ...

这个语句用指定的打开游标读取下一行,如果有下一行的话,并且前进游标指针.

4.游标CLOSE语句:CLOSE cursor_name

这个语句关闭先前打开的游标.

例1,代码如下:

  1. //建立表结构
  2. createtableperson(namevarchar(10));
  3. insertintopersonvalues(¹a¹);
  4. insertintopersonvalues(¹b¹);
  5. insertintopersonvalues(¹c¹);
  6. insertintopersonvalues(¹d¹);
  7. insertintopersonvalues(¹e¹);
  8. //初始化
  9. dropprocedureifexistscursorTest
  10. //建立
  11. CREATEPROCEDUREcursorTest()
  12. BEGIN
  13. //定义变量
  14. declarename1varchar(10)default¹¹;
  15. declarename2varchar(100)default¹¹;
  16. declaremycursorCURSORFORselectnamefromperson;
  17. declareCONTINUEHANDLERFORSQLSTATE¹02000¹SETtmpname=null;
  18. //打开游标
  19. OPENmycursor;
  20. //遍历游标
  21. FETCHmycursorINTOname1;
  22. //把游标查询出的name都加起并用;号隔开
  23. WHILE(name1isnotnull)DO
  24. setname1=CONCAT(name1,";");
  25. setname2=CONCAT(name2,name1);
  26. FETCHmycursorINTOname1;
  27. ENDWHILE;
  28. CLOSEmycursor;
  29. --phpfensi.com
  30. selectmycursor;
  31. END;
  32. //调用游标
  33. callmycursor()
  34. --运行结果:
  35. mysql>callmycursor()
  36. +--------------------------------------+
  37. |name2|
  38. +--------------------------------------+
  39. |a;b;c;d;e;|
  40. +--------------------------------------+
  41. 1rowinset(0.01sec)

例2,一个完整的例子,代码如下:

  1. --定义本地变量
  2. DECLAREovarchar(128);
  3. --定义游标
  4. DECLAREordernumbersCURSOR
  5. FOR
  6. SELECTcallee_nameFROMaccount_tblwhereacct_timeduration=10800;
  7. DECLARECONTINUEHANDLERFORNOTFOUNDSETno_more_departments=1;
  8. SETno_more_departments=0;
  9. --打开游标
  10. OPENordernumbers;
  11. --循环所有的行
  12. REPEAT
  13. --Getordernumber
  14. FETCHordernumbersINTOo;
  15. updateaccountsetallMoney=allMoney+72,lastMonthConsume=lastMonthConsume-72whereNumTg=@o;
  16. --循环结束
  17. UNTILno_more_departments
  18. ENDREPEAT;
  19. --关闭游标
  20. CLOSEordernumbers;

游标(cursor)的特性

1,只读的,不能更新的.

2,不滚动的.

3,不敏感的,不敏感意为服务器可以活不可以复制它的结果表.

游标(cursor)必须在声明处理程序之前被声明,并且变量和条件必须在声明游标或处理程序之前被声明.

相关广告
  • mysql的游标怎么使用 mysql的游标怎么使用 mysql的游标怎么使用
相关阅读

mysql的游标怎么使用

2019/10/10 17:34:03 | 谷歌SEO算法 | 挖矿