MySQL存储过程和函数

1.什么是存储过程和函数

1.存储过程和函数是实现经过编译并被存储在数据库中的一段sql语句集合。
2.函数具有返回值,存储过程无返回值。
3.存储过程和函数是为了减少数据在客户端和服务器之间的传输,提高了运行的效率。

2.存储过程和函数的相关操作

2.1 存储过程和函数的创建

	# 存储过程
	create procedure sp_name([[in|out|inout] param_name p_type],)
	[characteristic...]
	begin
		sql statement...
	end
	
	# 函数
	create function sp_name([[in|out|inout] param_name p_type])
	returns type
	[characteristic...]
	begin
		sql statement...
	end	

	# 调用
	call sp_name(param,)

2.2 删除存储过程和函数

	drop [procedure | function] sp_name;

2.3 查看存储过程和函数的信息

	# 查看状态
	show [procedure | function] status like 'pattern';
	
	# 查看定义
	show create [procedure | function] sp_name;

	# 通过查找系统定义的表
	select * from routines where ROUTINE_NAME = 'selectById';

3.变量的使用

变量是不区分大小写的.

3.1 变量的定义

	declare var_name[,...] type [default d_value]

3.2 变量的赋值

	set var_name = `value`;
	select `value` into var_name;

4. 条件的定义和处理

类似于Java中的异常处理机制,MySQL中,对可能事先出现的异常(主键重复等等)进行条件定义,然后在条件处理中针对指定的条件进行处理。

  • 条件定义
	declare condtion_name condition condition_value
	conditon_value:
		mysql_error_code | SQLSTATE [VALUE] sqlstate_value
  • 条件处理
	declare handler_type handler for condition_value[,...] sp_state_ment;
	condtion_value :
		condtion_name | sql_error_code | ...
	handler_typt : 
		continue | exit
		# continue : 继续执行
		# exit : 退出

5. 流程控制语句

5.1 if语句

	if condtion then statement_list
	elseif conditino statement_list
	...
	else statement
	end if 

5.2 CASE语句

	case case_value
		when when_value then  ...
		when when_value then  ...
		else ...
	
	case 
		when condtion then ..
		when conditon then ..
		else ...
	end case 

5.3 loop循环

	loop_lable:loop
		....
		....
		....
		leave loop_lable;
	end loop 

5.4 iterate

类似于continue,跳过当前循环继续下一层循环

			iterate loop_lable;

5.5 repeat

类似do while。常与cursor一起使用

	repeat 
		fetch cur_name into ...
		....
	until 0	end repeat 

5.6 while

	[begin_lable:] while condition do
		...
	end while [end_lable]

6.光标

  1. 定义光标
	declare cur_name cursor for statement
  1. 打开光标 open cur_name;
  2. 取光标中的数据
	 fetch cursor_name into var_name [, var_name] ...
  1. 关闭光标 close cur_name;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值