创建存储过程 目录
- 前言
- 一、存储过程的格式
- 二、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:10 结果2:1000 结果3:10
(2)OUT输出参数:
该值可在存储过程内部被改变,并可返回
- 创建存储过程:
- 调用存储过程:
- 结果:14 表示emp表所有记录的条数是14条
(3)INOUT输入输出参数:调用时指定,并且可被改变和返回
- 创建存储过程:
- 调用存储过程:
- 结果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:
- 方式2:
- 查询结果:
- 注:声明用户变量并且赋值的时候可以使用表达式:
- (2)在存储过程中使用用户变量
- 创建存储过程:
- 调用存储过程:
- 结果:
- (3)在存储过程间传递全局范围的用户变量
- 创建存储过程:
- 调用存储过程:
- 结果: