zoukankan      html  css  js  c++  java
  • mysql的存储过程笔记

      最近公司的项目是关于数据库检测的,用的是mysql数据库,需要写存储过程。之前写过mysql,不过都是几张表之间的查询,一些比较浅显的用法,这次使用存储过程,我还是第一次听说。于是星期天看了一下学了一天内容,基本上有点了解,写这个博客主要是为了检测到底会记住了多少。

      工欲善其事,必先利其器,之前使用的数据库工具一直是Navicat Premium ,挺好的一个软件,但是写存储过程就比较不好了,不能调试,于是在网上查了一下可以调试数据库的工具终于找到了,dbforge studio for mysql 这是个付费软件,本人现在比较穷,搜了一个破解版的安装上了,工具调试与程序设计语言差不多,非常好用。

      闲话不多说,我是在navicat上面创建一个存储过程,然后再跳转到dbforge里面进行编写,因为在dbforge上面创建存储过程会出现一些问题,而这个问题我一直不知道怎么解决,于是在navicat上面创建

      步骤一:drop procedure if exists 存储过程名称

      步骤二:delimiter//

      步骤三:create procedure 存储过程名称(参数1,参数2....);

      begin

      end

      在begin 与end里面编写数据库代码,所需要知道的是声明declare 加变量名称 再加变量类型,记得用冒号结尾,几大类型就不必多说,整形,字符型等等,有一个是极为重要的是如何分别提取存储表的内容,此处可以使用游标 declare  名称 cursor for +查询语句,这样就可以把后面查询出来的表名给存储到名称中,那么如何获取表中的内容呢?

      可以使用循环语句while或者for来进行获取

      首先使用游标声明记录表的行数count

      然后将游标打开 open 游标名称,将游标内容赋值给变量 fetch 游标名 into 变量名

      使用变量名为循环次数,做while循环。再打开表的游标,将表的字段复制给变量名称,有几个字段就赋值给几个变量,比如一张student表中有id,sex,name,申明时

      declare id varchar(20);

      declare sex varchar(20);

      declare name varchar(20);

      declare id_sex_name cursor for select id,sex,name from student;

      open id_sex_name;

      fetch id_sex_name into id,sex,name;

      这个就是游标的内容,其他的就是查询,你可以在存储过程中直接查询使用select语句,也可以使用字符串语句最后执行

      prepare pres for @sql

      execute @sql

      deallocate @sql

      这样也可以得到查询结果。其他需要注意的是if语句后面要跟着then ,if语句结束后需要加end if ,其他和编程语言逻辑差不多,都一样,注意其中的区别便是

      

  • 相关阅读:
    Java实现 蓝桥杯VIP 算法提高 选择排序
    Java实现 蓝桥杯VIP 算法提高 选择排序
    Java实现 蓝桥杯VIP 算法提高 选择排序
    QT中的SOCKET编程
    代理Delegate的小应用(使用setModelData设置下拉日期对话框)
    360企业云盘需求调研,包括定价
    大神为你分析 Go、Java、C 等主流编程语言(Go可以替代Java,而且最小化程序员的工作量,学习比较容易)
    VS 查看是否有内存泄露的方法
    SpringMVC之 数据绑定-1
    动画操作 (Applying Animations) ngAnimate12
  • 原文地址:https://www.cnblogs.com/yq12138/p/8576108.html
Copyright © 2011-2022 走看看