MySQL_自定义函数

版权声明:由于作者水平有限,文中难免有误,欢迎各位业界同仁斧正! https://blog.csdn.net/UserPython/article/details/82940731

创建存储过程

语法格式:

CREATE PROCEDURE sp_name([proc_parameter[ … ]])
[characteristic … ] routine_body

  • sp_name : 存储过程的名称
  • proc_parameter : 表示存储过程参数列表
  • proc_parameter中的参数由3部分组成,它们分别是输入输出型、参数名称和参数类型。其中形式为**[IN | OUT |INOUT] param_name type**。其中,IN表示输入参数;OUT表示输出参数;INOUT表示既可以输入也可以输出;param_name参数时存储过程参数名称;type表示指定存储过程的参数类型,该类型可以为MySQL数据库的任意数据类型。
  • characteristic :参数指定存储过程的特性
  • routine_body : 参数时SQL代码的内容,可以用BEGIN … END来标识SQL代码的开始和结束
  • MySQL存储过程名称不区分大小写
  • MySQL语句默认的结束符为分号“;”,存储过程中的SQL语句需要分号来结束。为了避免冲突,首先用“delimiter //” 将MySQL的结束符设置为//,最后再用“delimiter ;” 来将结束符恢复成分号。更改结束标识可以用关键字delimiter定义

创建自定义函数

语法格式:

CREATE FUNCTION function_name([func_parameter])
RETURNS type
[characteristics … ] routine_body

  • function_name : 函数名称
  • func_parameter : 函数的参数列表(格式:参数名称 参数类型 param_name type
  • RETURNS type : 指定返回值的类型
  • Characteristics指定存储函数的特性,取值举例:
  • SQL SECURITY{DEFINER | INVOKER} : 指明谁有权限来执行
  • DEFINER : 表示只有定义者才能执行
  • INVOKER :表示拥有权限的调用者才可以执行,默认情况下,系统指定为DEFINER
  • COMMENT ‘string’ : 注释信息,可以用来描述存储函数
  • routine_body : 函数体
  • 函数体是由SQL代码构成
  • 函数体可以是简单的SQL语句,比如:简单的查询语句
  • 函数体如果为复合结构需要使用BEGIN … END语句
  • 复合结构可以包含声明、流程控制

创建无参的自定义函数
需求:创建一个返回系统日期的函数,日期格式为“xxxx年xx月xx日”
在这里插入图片描述

创建有参的自定义函数
*需求:创建一个函数,根据图书ID,返回书名和库存的字符串信息。格式为“书名—库存”
在这里插入图片描述

删除自定义函数

  • 删除存储过程函数和函数,可以使用DROP语句,语法为:

DROP FUNCTION [IF EXISTS] func_name;

在这里插入图片描述

流程控制的使用

变量

  • 可以在存储程序(存储过程和函数)中使用变量
  • 在存储程序中变量的作用范围在BEGIN … AND之间
    定义变量
  • 语法格式

DECLARE var_name [, varname2, varname3 …] date_type [DEFAULT value];
例:DECARE num INT DEFAULE 10;

为变量赋值

  • 定义变量后,通过赋值可以改变变量的默认值
  • 两种赋值方式:

SET var_name = expr [, var_name = expr, …];

* 例:SET num = 100;

SELECT col_name [, … ] INTO var_name [, … ] table_expr;

* 例:SELECT store INTO num from bookinfo;//将查询结果赋值给变量

在这里插入图片描述

流程控制语句

  • 流程控制语句是用来根据条件控制语句的执行
  • 常用的流程控制语句:
  • IF条件判断语句
  • CASE条件判断语句
  • WHILE循环语句
  • LOOP循环语句
  • REPEAT循环语句

IF条件判断语句

  • IF语句包含多个条件判断,根据判断的结果为TRUE或FALSE执行相应的语句
  • 语法格式:

IF condition THEN
  …
[ELSEIF condition THEN]
  …
[ELSE]
  …
END IF;

需求:查询读者信息表,根据用户的余额判断用户的会员级别
1、根据身份证号查询用户的余额
2、当用户的余额大于等于500时为金牌会员
3、当用户的余额大于等于300时为高级会员
4、当用户的余额大于等于200时为普通会员
5、小于200元,不能借书,显示“非会员,余额不足”

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/UserPython/article/details/82940731