频道栏目
首页 > 数据库 > MySQL > 正文
mysql存储过程和函数的使用分析
2018-06-19 11:59:06         来源:qq_41172761的博客  
收藏   我要投稿

存储过程是一系列sql语句集,具有灵活性,速度快,批处理、安全等特点;缺点:编程复杂、需要创建数据库对象的权限

掌握存储过程的定义、查看、修改、删除;

定义存储过程:

create procedure pro_name(parameter type)

[characteristic] routine_body;

pro_name 存储过程名

parameter 存储过程参数

语法:in|out|inout parameter_name type

characteristic :存储过程特性

取值:

language sql:表示routine_body 由sql语言组成,MySQL软件默认语言

[not] deterministic:表示存储过程的执行结果是否确定

SQL语言限制:

contain sql:包含sql语言,但不包含写数据的语言(默认值)

no sql:不包含sql语言

reads sql data:包含读数据的语言

modifies sql data:包含写数据的语言

sql security(definer|invoker):表示谁有权限来执行(定义者(默认)|调用者)

comment 'string':注释语句

定义变量:

select @val_name;(用户变量),可以用于当前整个链接

declare val_name type [default 默认值](局部变量),用于sql语句块中

变量赋值

set @val_name=3;

select @val_name:=3;

调用存储过程:

call procedure_name();

查看存储过程:

通过mysql.proc查看

1、select name from mysql.proc where db='db_name';

通过information_schema.routine 查看

2、select routine_name from information_schema.routines where routine_schema='db_name';(查看某一数据库下所有的存储过程和函数的名称)

select * from information_schema.routines where routine_name='procedure_name';(查看某一存储过程的全部信息)

information_schema数据库下的Routines表中,存储着所有存储过程和函数的定义。如果使用SELECT语句查询Routines表中的存储过程和函数的定义时,一定要使用ROUTINE_NAME字段指定存储过程或函数的名称。否则,将查询出所有的存储过程或函数的定义

通过procedure status 查看

3、show procedure status where db='db_name';

查看存储过程详细信息

4、show create procedure db.procedure_name;

5、查看存储过程和函数的状态:g

show proceure|function status like 'procedure_name|function_name';

修改存储过程:

alter procedure 更改create procedure

alter procedure procedure_name(parameter type)

characteristic

routine body;

删除存储过程:

drop procedure procedure_name;

创建存储函数:

create function function_name(in|out|inout parameter type)

characteristic

routine body

characteristic:存储函数特性

language sql:MySQL软件默认值,表示routine body包含sql语言

[not] determinister:执行结果是否确定

contain sql:默认值,包含sql语句但是不包含写数据的语言

no sql:不包含sql语言;

reads sql data :包含读数据的语言;

modifies sql data:包含写数据的语言;

查看存储过程和函数:

1、通过show status 查看存储过程和函数的状态:

show procedure|function status like'pro_name|func_name';

2、通过show create procedure|function 查看创建过程的定义信息:

show create procedure | function pro_name|func_name;

3、通过系统数据库information_schema中的系统表routines查看所有信息:

select * from information_schema.routines where routine_name='routine_name';

条件结构:

if then else endif;

循环结构:

loop:

end loop;

修改存储过程和函数:

alter procedure|function pro_name|func_name characteristic;

点击复制链接 与好友分享!回本站首页
上一篇:简单讲一下MySQL与python的交互
下一篇:分享一个MySQL查询语句练习题及题解
相关文章
图文推荐
点击排行

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站