MySQL存储过程二

上一篇简单介绍了存储过程的语法,这篇是对存储过程的进一步深入

这里介绍的是mysql存储过程的游标的使用

create procedure set_data()
begin
 declare done int default 0;
        declare my_goodsId int;//使用的是int类型,尽量和数据库中的不一样,否则可能出错,因为这是用来存储数据用的,类似插入数据库
        declare my_sid int;
        declare my_goodsImg varchar(250);
        declare my_goodsName varchar(50) character set utf8;
        declare my_goodsUnit char(10) character set utf8;
        declare my_goodsDesc text character set utf8;
        declare id int;
        declare my_cursor cursor for select goodsId,sid,goodsImg,goodsName,goodsUnit,goodsDesc from yk_goods where shopId=0;
        declare continue handler for sqlstate '02000' set done=1;
        open my_cursor;
        myLoop:loop
         fetch my_cursor into my_goodsId,my_sid,my_goodsImg,my_goodsName,my_goodsUnit,my_goodsDesc;
                if done=1 then
                 leave myLoop;
                end if;
            update `yk_goods` set `goodsImg`=my_goodsImg,`goodsName`=my_goodsName,`goodsUnit`=my_goodsUnit,`goodsDesc`=my_goodsDesc where `sid`=my_goodsId;
        end loop myLoop;
        close my_cursor;
end;
declare my_cursor cursor for select goodsId,sid,goodsImg,goodsName,goodsUnit,goodsDesc from yk_goods where shopId=0; 

这句sql类似把goods表中的数据(二维数组)查询出来,赋值给了my_cursor游标

 declare continue handler for sqlstate '02000' set done=1;

表示 单游标执行到最后的时候, 把done变量设置为1

fetch my_cursor into my_goodsId,my_sid,my_goodsImg,my_goodsName,my_goodsUnit,my_goodsDesc

这个很像一个赋值语句,把my_cursor中的数据,分别对应字段名进行赋值
goodsId对应my_goodsId,goodsImg对应my_goodsImg,以此类推。。。

if done=1 then
      leave myLoop;
end if;

这个是一个if语句,当done=1时,跳出循环,也就是说游标执行到最后的时候,不用再循环了,可以结束了。

以上就是我对存储过程游标的理解,如有错误,还望指正

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 之前在项目上遇到一个问题,实施人员在数据库中建了许多临时的测试数据,在正式客户环境中是要删掉的,但是产品页面上没有...
    Walkerc阅读 2,745评论 0 1
  • 往往看别人的代码会有这样的感慨:看不懂理还乱是离愁别是一番滋味在心头 为什么要使用存储过程? 在mysql开发中使...
    老马的春天阅读 2,151评论 0 9
  • 第八章 数据查询和选择 ||| 第十章 获取GIS数据列表和描述信息 我们将在本章中介绍以下几个案例: 游标对象(...
    muyan阅读 21,378评论 5 21
  • oracle存储过程常用技巧 我们在进行pl/sql编程时打交道最多的就是存储过程了。存储过程的结构是非常的简单的...
    dertch阅读 3,514评论 1 12
  • 我们在进行pl/sql编程时打交道最多的就是存储过程了。存储过程的结构是非常的简单的,我们在这里除了学习存储过程的...
    AlbenXie阅读 2,983评论 1 3