mysql存储过程和函数

存储过程是一系列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;

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值