mysql存储过程简介

存储过程:
1.什么是存储过程?
能在数据库中编译执行的代码

2.存储过程有什么用?
在数据库中一次性执行复杂的操作流程,减少数据的访问次数,同时加快数据执行效率。

3.存储过程的知识结构
存储过程体、存储函数、变量、定义条件相关处理、光标、逻辑流程、存储过程的删除与修改

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没有修改存储过程和函数代码的方法,目前只能修改其权限。如果要修改,只能删除后重新添加。

猜你喜欢

转载自www.cnblogs.com/javaCommunication/p/9194517.html