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
参数模式有三种
- IN:该参数可以作为输入也就是该参数需要调用方传入值
- OUT:该参数可以作为输出也就是该参数可以作为返回值
- 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 …]
用户变量
用户变量名一般以@开头