mysql存储过程基本语法

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6

本文来说下mysql存储过程基本语法

文章目录


基本语法

存储过程就是具有名字的一段代码用来完成一个特定的功能。创建的存储过程保存在数据库的数据字典中

// 声明存储过程
CREATE
    [DEFINER = { user | CURRENT_USER }]
 PROCEDURE sp_name ([proc_parameter[,...]])
    [characteristic ...] routine_body

// 存储过程的参数
proc_parameter:
    [ IN | OUT | INOUT ] param_name type

// 指定存储过程的特性
characteristic:
    COMMENT 'string'
  | LANGUAGE SQL
  | [NOT] DETERMINISTIC
  | { CONTAINS SQL | NO SQL | READS SQL DATA | MODIFIES SQL DATA }
  | SQL SECURITY { DEFINER | INVOKER }
 
// SQL代码的内容可以用BEGIN...END来表示SQL代码的开始与结束
routine_body:
  Valid SQL routine statement
 
[begin_label:] BEGIN
  [statement_list]
    ……
END [end_label]

常用格式

CREATE PROCEDURE 存储过程名称(参数模式 参数名 参数类型)
BEGIN
	存储过程体
END

参数模式有三种

  1. IN:该参数可以作为输入也就是该参数需要调用方传入值
  2. OUT:该参数可以作为输出也就是该参数可以作为返回值
  3. INOUT:该参数既可以作为输入又可以作为输出也就是该参数既需要传入值又可以返回值

delimiter问题

在Mysql中因为存储过程中的SQL语句必须以分号结尾而mysql的cmd窗口在遇到sql语句加分号时会直接执行语句而发送冲突导致存储过程创建失败。

因此我们要修改存储过程的结束符让mysql可以识别。


使用实例

存在一张员工表有如下的三条数据

在这里插入图片描述

创建一个存储过程查询员工的基本信息

delimiter//
create procedure get_employee_info()
begin
select * from employee_info;
end//
delimiter;

创建成功

在这里插入图片描述
在这里插入图片描述在这里插入图片描述

如何调用存储过程

call sp_name[(传参)];

调用成功

在这里插入图片描述

删除存储过程

DROP {PROCEDURE | FUNCTION} [IF EXISTS] sp_name

这个语句被用来移除一个存储程序或函数。即从服务器移除一个制定的子程序。

在这里插入图片描述


变量的使用

变量定义

局部变量声明一定要放在存储过程体的开始:

DECLAREvariable_name [,variable_name...] datatype [DEFAULT value];

使用实例

在这里插入图片描述

结果

在这里插入图片描述


declare语句

DECLARE仅被用在BEGIN … END复合语句里并且必须在复合语句的开头在任何其它语句之前。

在这里插入图片描述


变量赋值

SET 变量名 = 表达式值 [,variable_name = expression …]

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


用户变量

用户变量名一般以@开头

在这里插入图片描述

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6
标签: mysql