WHCSRL 技术网

MySQL存储过程

存储过程,是一种在数据库中存储复杂程序,以便外部程序调用的一种数据库对象;思想:相当于数据库 SQL 语言层面的代码封装与重用,例如:一个pojo中有许多属性,方法;

场景:MySQL + Navicat

1、存储过程命名规范

前缀:proc_
语法:

CREATE DEFINER=CURRENT_USER PROCEDURE `存储过程名`(	
	模式 `字段名` 类型	 
)
BEGIN
	#Routine body goes here...
	
END
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

模式:IN单向入参 | OUT单向出参 | INOUT双向

解释
模式选择你入参的行为
字段名指定参数的名,必须
类型参数可以接受值的类型,必须

2、如何使用Navicat创建存储过程

在这里插入图片描述
在这里插入图片描述在这里插入图片描述测试下运行效果:
在这里插入图片描述
这里很明确的体现了模式,OUT是不能入参的,但是一定会返回
在这里插入图片描述在这里插入图片描述

3、调用存储过程

①、调用存储过程call proc_text(’ ’ , ’ ’ , ’ ');
’ ’ 的个数为你所定义的属性,即使值为空也要有,对应你定义的属性顺序

②、在存储过程中动态执行sql

prepare stmt from @sql_str;  --预处理需要执行的动态SQL,其中stmt是一个变量
EXECUTE stmt;      --执行SQL语句
deallocate prepare stmt;     --释放掉预处理段
  • 1
  • 2
  • 3

4、记录

①、同一张临时表只能在存储过程中执行查询(SELECT)语句一次;
②、动态sql需采用拼接函数(CONCAT());
③、@表示全局变量;
④、Truncate Table name 清空表数据 并重置主键/自动增长列计数器
⑤、判断是否存在,不存在创建临时表

CREATE TEMPORARY table IF NOT EXISTS tmp_dlgx_yx
	(    
		列名 类型,
		列名 类型
	);
  • 1
  • 2
  • 3
  • 4
  • 5

⑥、赋值 set @age = 18;
⑦、drop table name删除表;
⑧、DATE_ADD(date,INTERVAL expr unit)函数;

推荐阅读