目录
- 1. 存储过程
- 1.1. 基本语法
- 1.2 创建一个指定执行权限的存储过程
- 1.3 delimiter 的使用
- 2. 创建函数
1. 存储过程
1.1. 基本语法
create procedure name ([params]) unsigned [characteristics] routine_body
params : in|out|inout 指定参数列表 代表输入与输出
routine_body: sql代码内容,以begin …….. end
characteristics: 指定存储过程特性,包含5种
1 deterministic 不确定的
2 no sql 没有sql语句,当然也不会修改数据
3 reads sql data 只是读取数据,当然也不会修改数据
4 modifies sql data 要修改数据
5 contains sql 包含了sql语句
1.2 创建一个指定执行权限的存储过程
create definer=`root`@`%` procedure name ([params]) unsigned [characteristics] routine_body
definer:指明谁有权力来执行。
1.3 delimiter 的使用
”delimiter //“ 表示设置“//”符号为结束语,因为mysql中默认语句结束为分号‘;’,为了避免存储过程与mysql语句符号冲突,所以有时使用delimiter来改变结束语符号,要配合end //来使用;
示例:创建一个root账户执行的存储过程,输出给定字符串的长度
delimiter // create definer=`root`@`%` procedure `avgfruitprice`( in f_string varchar(200) ) begin select length(f_string); end//
2. 创建函数
函数的创建与存储过程相同
示例
delimiter // create definer=`root`@`%` function `my_length`( f_string varchar(200) ) returns int(11) unsigned no sql begin return length(f_string); end//
注意: 创建函数需要注意3个地方,
1. returns: 需指定返回类型
2. unsigned no sql 需指定存储过程特性
3.return: 返回需要的数据
遇见的错误:
如报错如上信息就是没有指定存储过程特性。
存储过程函数中可以通过mysql查询结果为其参数复制: 其语句为select …. into
begin declare onename char(50) default‘0'; declare twoname char(50); select f_name, b_name into onename, twoname from t_user where id =1; ....... end//
说明:
declare: 存储过程及函数内部定义变量
default:默认值
到此这篇关于mysql创建存储过程及函数详解的文章就介绍到这了,更多相关mysql存储过程及函数内容请搜索www.887551.com以前的文章或继续浏览下面的相关文章希望大家以后多多支持www.887551.com!