3.1 存储过程体
定义: 存储过程的实现和大致框架, 实现后保存在数据库的函数表中, 使用 call 直接调用, 可以定义输入和输出, 可以嵌套.
模板: 使用 create procedure pro_name(type par_name data_type) end;
模板介绍: 使用 create 关键字表明模板的创建, procedure 表示存储过程关键字.
pro_name 存储过程名, type 为数据导向含 in(输入),out(输出),inout(输入输出).
param_name 参数名 ,type 参数类型, 与 SQL 中的参数类型一致.
注意: 使用 // 将存储过程的分号进行转义, 避免其与 sql 语句想混淆.
3.2 存储函数
定义: 声明面向数据库的函数, 当函数声明成功后, 可以像 mysql 内置函数一样调用.
使用模板: CREATE FUNCTION fun_test([param])
- returns type
- return data
模板介绍: function 函数关键字 ,fun_test 函数名, 可以传入参数. returns 表示返回类型, return 表示返回数据.
注意: 注意两个返回值是一样的, 一个最后加 S, 另一个后面没有.
3.3 变量
定义: 存储执行流程中的参数值
模板: declare par_name type default value; set par_name =value;
模板介绍: par_name 参数名, type 为参数类型, default 如果不写则为 null,set 表示为参数赋值.
注意: 参数只能声明在存储过程中, 方法中也不行.
3.4 定义条件相关处理
定义: 特定的条件需要特定处理, 一般是错误和流程控制.
模板: declare con_name condition for [con_type] sqlstate
模板介绍: declare 声明处理名, for 来源 ,sqlstate 条件编码
3.5 光标
定义: 针对一个查询结果, 使用光标移动的方式可以遍历当中的每条数据.
模板: 声明光标 declare cur_name cursor for select_comment;
打开光标 open cur_name;
移动光标 fetch cur_name info var_name;
关闭光标 close cur_name;
模板介绍: 光标需要声明, 才能使用. 使用后注意关闭.
注意: var_name 必须在使用前声明, 使用循环遍历光标是, 需要定义相关处理条件
循环条件 declare CONTINUE HANDLER FOR SQLSTATE '02000' SET nstates = null;
3.6 逻辑流程
定义: 程序都含有 分支, 循环等逻辑流程, 使得程序能多样执行.
模板: if then elseif then end if ,while() DO end while , case when end ,
LOOP end LOOP , leave(跳出循环) ,iterate (跳出当前循环) ,repeat (满足条件退出)
注意: 循环时, 注意下表问题, 同时做定义条件相关处理.
3.7 没有修改存储过程和函数代码的方法, 目前只能修改其权限. 如果要修改, 只能删除后重新添加.
来源: https://www.cnblogs.com/javaCommunication/p/9194517.html