存储程序分为存储过程和函数

  可以使用CALL来调用存储过程,只能输出变量返回值。存储过程可以调用其他存储过程

  函数可以从语句外调用,也能返回标量值

  什么是存储过程?

  简单的说,就是一组SQL语句集,功能强大,可以实现一些比较复杂的逻辑功能,类似于JAVA语言中的方法;

  ps:存储过程跟触发器有点类似,都是一组SQL集,但是存储过程是主动调用的,且功能比触发器更加强大,触发器是某件事触发后自动调用;

  存储过程的特性

  有输入输出参数,可以声明变量,有if/else, case,while等控制语句,通过编写存储过程,可以实现复杂的逻辑功能;

  函数的普遍特性:模块化,封装,代码复用;

  速度快,只有首次执行需经过编译和优化步骤,后续被调用可以直接执行,省去以上步骤;

  DELIMITER的使用

  mysql默认的结束符为;但是存储过程中可能出现多个分号导致结束。所以需要用这个关键字设置SQL语句结束符,使用完之后可以再改回来

  要避免使用\,因为\是mysql的转义字符

  一、存储过程的创建

  CREATE PROCEDURE sp_name ([proc_parameter[,...]])

  [characteristic ...] routine_body;

  sp_name:存储过程的名称

  proc_parameter:存储过程的参数列表

  routine_body:是SQL代码的内容(用BEGIN和END来表示SQL代码的开始和结束)

  proc_parameter格式如下:

  [ IN | OUT | INOUT ] param_name type

  IN表示输入参数,OUT表示输出参数,INOUT表示既可以输入也可以输出

  param_name参数的名称

  type参数的类型

  演示

  创建一个名为AvgFruitPrice的存储过程,返回所有水果的平均价格

  DELIMITER //

  create procedure AvgFruitPrice()

  begin

  select avg(f_price) as avgprice from fruits;

  end;

  //

  创建一个查看fruits表的存储过程

  DELIMITER //

  create procedure Proc()

  begin

  select * from fruits;

  end;

  //

  创建名称为CountProc的存储过程(将count(*)的结果放入参数param1中)

  DELIMITER //

  create procedure CountProc(out paraml int)

  begin

  select count(*) into param1 from fruits;

  end;无锡做人流 http://www.chnk120.com

  //

  二、函数的创建

  CREATE FUNCTION func_name ([func_parameter[,……]])

  RETURNS type

  [characteristic……] routine_body

  func_name:存储函数的名称

  func_parameter:存储过程的参数列表

  RETURNS type:表示函数返回数据的类型

  characteristic:指定存储函数的特性

  proc_parameter格式如下:

  [ IN | OUT | INOUT ] param_name type

  IN表示输入参数,OUT表示输出参数,INOUT表示既可以输入也可以输出

  param_name参数的名称

  type参数的类型

  如果存储函数的RETURN语句返回一个类型不同于函数的RETURNS子句中指定类型的值,返回值将被强制转为恰当的类型

  案例

  创建名为NameByZip的存储函数,返回select语句的查询结果,数值类型为字符串类型

  DELIMITER //

  create function NameByZip()

  returns varchar(50)

  return (select s_name from suppliers where s_call='48075');

  //

MySQL教程之存储过程与函数的更多相关文章

  1. MySQL中的存储过程和函数使用详解

    一.对待存储过程和函数的态度 在实际项目中应该尽量少用存储过程和函数,理由如下: 1.移植性差,在MySQL中的存储过程移植到sqlsever上就不一定可以用了. 2.调试麻烦,在db中报一个错误和在 ...

  2. MySQL基础值 存储过程和函数

    一.创建存储过程和函数 什么是创建存储过程和函数? 就是将经常使用的一组SQL语句组合在一起,并将这些SQL语句当做一个整体存储在MYSQL服务器中. 创建存储过程的语句是:CREATE  PROCE ...

  3. MySQL中的存储过程和函数

    存储过程和函数 简单的说,存储过程就是一条或者多条SQL语句的集合.可以视为批文件,但是其作用不仅仅局限于批处理.本文主要介绍如何创建存储过程和存储函数,以及如何调用.查看.修改.删除存储过程和存储函 ...

  4. MySQL存储过程和自定义函数、Navicat for mysql、创建存储过程和函数、调用存储过程和函数的区别

    1 MySQL存储过程和函数 过程和函数,它们被编译后保存在数据库中,称为持久性存储模块(Persistent Stored Module,PSM),可以反复调用,运行速度快. 1.1 存储过程 存储 ...

  5. MySQL中的存储过程、函数与触发器

    一.对待存储过程和函数的态度 优点: 1.存储过程只在创建时进行编译,sql语句则每次执行都需要编译.能提高数据库执行速度. 2.简单复杂操作结合事物一起封装. 3.复用性高. 4.安全性高,可指定存 ...

  6. <MySQL>入门七 存储过程和函数

    -- 存储过程和函数 /* 存储过程和函数:类似java中的方法 好处: 1.提高代码的重用性 2.简化操作 */ /* 存储过程 含义:一组预先编译好的SQL语句的集合.理解成批处理语句 1.提高代 ...

  7. Mysql变量、存储过程、函数、流程控制

    一.系统变量 系统变量: 全局变量 会话变量 自定义变量: 用户变量 局部变量 说明:变量由系统定义,不是用户定义,属于服务器层面 注意:全局变量需要添加global关键字,会话变量需要添加sessi ...

  8. MySql视图、存储过程、函数、索引

    一.视图 视图是查询命令结果构成的一个虚拟表(非真实存在),其本质是[根据SQL语句获取动态的数据集,并为其命名],用户使用时只需使用[名称]即可获取结果集合,并可以当作表来查询使用. 1创建视图 - ...

  9. 八、mysql视图、存储过程、函数以及时间调度器

    .create or replace view emp_view as select * from t4 ;给t4表创建一个名为emp_view的视图 .drop view emp_view 删除视图 ...

随机推荐

  1. web前端图片预加载

    是什么? 浏览器会缓存静态资源(hmtl/css/img等).图片预加载就是让浏览器提前缓存图片,提升用户体验. 浏览器什么情况下会下载图片? 1,解析到html中img的src属性的时候 2,解析到 ...

  2. Luogu P3694 邦邦的大合唱站队 【状压dp】By cellur925

    题目传送门 最开始学状压的时候...学长就讲的是这个题.当时对于刚好像明白互不侵犯和炮兵阵地的我来说好像在听天书.......因为我当时心里想,这又不是什么棋盘,咋状压啊?!后来发现这样的状压多了去了 ...

  3. tomcat复习

    javaEE 服务器: java企业版服务器:是一个标准 BS/CS: 1> CS: client/Server 优点:易操作性比较高 缺点:客户端需要升级维护. 2> BS: Brows ...

  4. Ubuntu 18.04 LTS 常见问题解决 2

    1 每次重启后都有system program problem detected sudo gedit /etc/default/apport 然后将打开的文件中的enabled=1改为0,原因暂时不 ...

  5. hdu1856 More is better 基础并查集

    #include <cstdio> #include <cstring> #include <algorithm> #include <cstdlib> ...

  6. iOS UITextView 设置圆角边框线

    textView.layer.borderColor = UIColor.lightGray.cgColor textView.layer.cornerRadius = 4 textView.laye ...

  7. ashx 中获取 session获取信息

    1.在应用程序中获取session,System.Web.HttpContext.Current.Session: 2.命名空间如下:IRequiresSessionState 调用方法 public ...

  8. python之url编码

    import urllib.parsempp='besttest 自动化测试'print(urllib.parse.quote_plus(mpp)) #url编码print(urllib.parse. ...

  9. 基于ABP的Easyui admin framework正式开放源代码

    下载&反馈:http://www.webplus.org.cn v1.0 (2016/9/21) EF6+MVC5+API2+Easyui1.4.2开发 后台管理不使用iframe,全ajax ...

  10. jQuery选择器之属性筛选选择器

    在这么多属性选择器中[attr="value"]和[attr*="value"]是最实用的 [attr="value"]能帮我们定位不同类型 ...