mysql/oracle数据库

数据库之 游标的解读和使用

2020-08-16  本文已影响0人  程序员ken

游标

在前面的分析中可知sql的检索操作返回的数据几乎都是以整个集合的形式,也就是说sql善于将多条查询记录集中到一起并返回,倘若现在需要一行行地处理查询的结果,这对于sql语句来说确实是个难题,好在存在一种称为游标的技术可以解决这个问题,所谓的游标就就是可以将检索出来的数据集合保存在内存中然后依次取出每条数据进行处理,这样就解决了sql语句无法进行行记录处理的难题,游标的读取图解如下:

原表:

批量(游标)取值:

fetch 游标名称 into @变量1,@变量2,@变量3。。。//这里设置值跟查询语句的列一一对应。所以别写错位置了

mysql存储过程使用表名作为参数-----------实现动态游标

视图部分。

例如上述,我写的是利用游标,清空对应的表,但会出现表“不存在”的情况。

存储过程语句:

CREATE DEFINER=`root`@`%` PROCEDURE `sp_empty_table`()

BEGIN

declare flag int default 0;#定义标识变量用于判断是否退出循环

declare tmp varchar(40);#定义临时存储变量

declare cur cursor for select name from view_all_table where name not LIKE 'sys_%' ;#声明游标

declare continue handler for not found set flag = 1; #异常处理并设置flag=1

open cur; # 打开游标

while flag!=1 do

 fetch cur into tmp ;#从游标中取值并存放到tmp中

 if flag !=1  then

       SET @sqlcmd = concat('truncate table ', tmp);

   prepare stmt from @sqlcmd;

   execute stmt;

         deallocate prepare stmt;

       #truncate table tmp;  

 end if;

end while;

close cur; #关闭游标

END

本文来源于:宋文超super,专属平台有csdn、思否(SegmentFault)、 简书、 开源中国(oschina),转载请注明出处。

上一篇下一篇

猜你喜欢

热点阅读