创建存储过程 目录

  • 前言
  • 一、存储过程的格式
  • 二、delimiter关键字
  • 三、存储过程的参数
  • 四 、存储过程的变量



前言

自定义存储过程,由用户创建并能完成某一特定功能的存储过程,存储过程既可以有参数又有返回值,但是它与函数不同,存储过程的返回值只是指明执行是否成功。


一、存储过程的格式

  • CREATE PROCEDURE 过程名([过程参数 […]])
    [特性 …] 过程体
    例如:
mysql> delimiter //
mysql> create procedure proc1(out s int)
    -> begin
    ->
    -> select count (*)into s from emp;
    -> end;
    -> //
-> delimiter;
<hr style=" border:solid; width:100px; height:1px;" color=#000000 size=1">

二、delimiter关键字

  • delimiter是分隔符的意思。
  • 如果我们没有声明分隔符,编译器会把存储过程当成SQL语句进行处理,那么存储过程的编译过程会报错,所以事先要使用delimiter关键字声明当前分隔符(delimiter //),这样MySQL才会将“;”当做存储过程中的代码,不会执行这些代码。但记得用完之后要把分隔符还原(delimiter;)。

三、存储过程的参数

  • MySQL存储过程的参数用在存储过程的定义,共有三种参数类型

IN,OUT,INOUT,

  • 形式如:CREATE PROCEDURE[[IN |OUT |INOUT]参数名 数据类型])

(1)IN输入参数:表示该参数的值必须在调用存储过程时指定,在存储过程中修改该参数的值不能被返回。如果没有指定参数,IN参数为默认值

  1. 创建存储过程:
  2. mysql存储过程创建语法 mysql创建存储过程语句_存储过程

  3. 调用存储过程:
  4. mysql存储过程创建语法 mysql创建存储过程语句_database_02

  5. 结果1:10    结果2:1000    结果3:10

(2)OUT输出参数:该值可在存储过程内部被改变,并可返回

  1. 创建存储过程:
  2. mysql存储过程创建语法 mysql创建存储过程语句_mysql_03

  3. 调用存储过程:
  4. mysql存储过程创建语法 mysql创建存储过程语句_存储过程_04

  5. 结果:14 表示emp表所有记录的条数是14条

(3)INOUT输入输出参数:调用时指定,并且可被改变和返回

  1. 创建存储过程:
  2. mysql存储过程创建语法 mysql创建存储过程语句_database_05

  3. 调用存储过程:
  4. mysql存储过程创建语法 mysql创建存储过程语句_存储过程_06

  5.  结果1:111    结果2:666     结果3: 666

四 、存储过程的变量

①  变量定义

  • DECLARE variable_name [variable_name…] datatype [DEFAULT value];
    其中,datatype为MySQL的数据类型,包括:int,float,date,datetime,varchar(length)。

②  用户变量

  • 用户变量名一般以@开头;

(1)在Mysql客户端使用用户变量

  • 方式1:
  • mysql存储过程创建语法 mysql创建存储过程语句_database_07

  • 方式2:
  • mysql存储过程创建语法 mysql创建存储过程语句_database_08

  • 查询结果:
  • mysql存储过程创建语法 mysql创建存储过程语句_数据库_09

  • 注:声明用户变量并且赋值的时候可以使用表达式:
  • mysql存储过程创建语法 mysql创建存储过程语句_mysql_10


  • mysql存储过程创建语法 mysql创建存储过程语句_mysql_11

  • (2)在存储过程中使用用户变量
  • 创建存储过程:
  • mysql存储过程创建语法 mysql创建存储过程语句_数据库_12

  • 调用存储过程:
  • mysql存储过程创建语法 mysql创建存储过程语句_mysql_13

  • 结果:
  • mysql存储过程创建语法 mysql创建存储过程语句_存储过程_14

  • (3)在存储过程间传递全局范围的用户变量
  • 创建存储过程:
  • mysql存储过程创建语法 mysql创建存储过程语句_mysql存储过程创建语法_15

  • 调用存储过程:
  • mysql存储过程创建语法 mysql创建存储过程语句_存储过程_16

  • 结果:
  • mysql存储过程创建语法 mysql创建存储过程语句_数据库_17