zoukankan      html  css  js  c++  java
  • 【MySQL】存储过程、游标、循环简单实例

    有时候仅凭 sql 语句可能达不到想要的数据操作目的,有可能需要写一些方法体,通过循环判断等操作最终达到目的。那么在数据库里实现这种方法体就需要存储过程了,个人觉得一个带注释的简单实例可以简单粗暴地解决大部分问题,当然要深入学习了解的话还是要看教程文档了,话不多说,上码:

    [sql] view plain copy
     
    1. create procedure my_procedure() -- 创建存储过程  
    2. begin -- 开始存储过程  
    3. declare my_id varchar(32); -- 自定义变量1  
    4. declare my_name varchar(50); -- 自定义变量2  
    5. DECLARE done INT DEFAULT FALSE; -- 自定义控制游标循环变量,默认false  
    6.   
    7. DECLARE My_Cursor CURSOR FOR ( SELECT id, name FROM t_people ); -- 定义游标并输入结果集  
    8. DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE; -- 绑定控制变量到游标,游标循环结束自动转true  
    9.   
    10. OPEN My_Cursor; -- 打开游标  
    11.   myLoop: LOOP -- 开始循环体,myLoop为自定义循环名,结束循环时用到  
    12.     FETCH My_Cursor into my_id, my_name; -- 将游标当前读取行的数据顺序赋予自定义变量12  
    13.     IF done THEN -- 判断是否继续循环  
    14.       LEAVE myLoop; -- 结束循环  
    15.     END IF;  
    16.     -- 自己要做的事情,在 sql 中直接使用自定义变量即可  
    17.     UPDATE t_user SET c_name = my_name WHERE id = my_id and rtrim(ltrim(c_name)) = ''; -- 左右去空格  
    18.   
    19.     COMMIT; -- 提交事务  
    20.   END LOOP myLoop; -- 结束自定义循环体  
    21.   CLOSE My_Cursor; -- 关闭游标  
    22. END; -- 结束存储过程  

    sql 调用存储过程

    [sql] view plain copy
     
    1. -- sql 执行存储过程  
    2. call my_procedure();  

    sql 删除存储过程

    [sql] view plain copy
     
    1. -- sql 删除存储过程  
    2. drop procedure my_procedure;  

    End .

  • 相关阅读:
    EntityFramework 启用迁移 EnableMigrations 报异常 "No context type was found in the assembly"
    JAVA 访问FTP服务器示例(2)
    NuGet Package Manager 更新错误解决办法
    JAVA 访问FTP服务器示例(1)
    RemoteAttribute 的使用问题
    诡异的 javascript 变量
    javascript apply用法
    Babun 中文乱码
    GSM呼叫过程
    转站博客园
  • 原文地址:https://www.cnblogs.com/Li-yuan/p/7163635.html
Copyright © 2011-2022 走看看