• MySQL教程之存储过程与函数


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

      可以使用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');

      //

  • 相关阅读:
    20171104 DOI Excel 导出
    ABAP 字符串处理
    SE80 开发对象
    ABAP开发中message dump
    物料单位转换的两个函数
    ABAP 多行消息分别显示弹窗
    隐藏你写的程序代码
    学习笔记:Javascript 变量 包装对象
    访问平安银行网站时出现证书问题 NET::ERR_CERT_SYMANTEC_LEGACY
    关于跨域问题
  • 原文地址:https://www.cnblogs.com/djw12333/p/10894465.html
Copyright © 2020-2023  润新知