Mysql -- 函数

个人的一些学习总结,各位大牛给指正指正。

函数

函数的含义
一组预先编译好的SQL语句的集合。

优点
a、提高代码的重用性(调用)
b、简化代码编写
c、减少了编译次数和数据器的连接次数,提升速率。

一、函数的创建

格式

create function 函数名(参数列表) returns 返回类型 begin
函数体
end

注意点

a、参数列表包含两部分
– ①参数名称 ②参数类型
b、函数体必须存在return语句,没有会报错。return可以不用放在函数体 的最后,但是不建议这样使用。
c、如果函数体中仅仅只有一条sql语句,可以省略begin end
d、使用delimiter语句定义结束标识符

二、函数的调用

格式
select 函数名(参数列表)
a、没有参数的函数

#案例:返回员工个数
delimiter $
create function myf1() returns int
begin 
	#局部变量接收查询的值
	declare emp_count int;
	select count(*) into emp_count 
	from employees;
	return emp_count;
end $ 

#调用函数
select myf1();

b、带参数有返回的函数

#案例:根据输入员工的姓名last_name,返回工作
delimiter $
create function get_salary_last_name(last_name varchar(20))returns double
begin 
	declare emp_salary double;
	select salary into emp_salary
	from employees
	where employees.last_name = last_name;#表中的last_name等于传入的last_name
	return emp_salary;
end $

#调用函数
select get_salary_last_name('De Haan');

三、删除函数

格式
drop function 函数名;

#删除单个函数
drop function myp1;
#删除多个函数
drop function myp1,myp2;

四、存储过程和函数的区别

1:存储函数和存储过程统称为存储例程(store routine),存储函数的限制比较多,例如不能用临时表,只能用表变量,而存储过程的限制较少,存储过程的实现功能要复杂些,而函数的实现功能针对性比较强

2:返回值不同 存储函数必须有返回值,且仅返回一个结果值 存储过程可以没有返回值,但是能返回结果集(out,inout)

3:调用时的不同 存储函数嵌入在SQL中使用,可以在select 存储函数名(变量值); 存储过程通过call语句调用 call 存储过程名

4:参数的不同 存储函数的参数类型类似于IN参数 存储过程的参数类型有三种
– 1: in 数据只是从外部传入内部使用(值传递),可以是数值也可以是变量
– 2: out只允许过程内部使用(不用外部数据),给外部使用的(引用传递:外部的数据会被先清空才会进入到内部),只能是变量
– 3: inout外部可以在内部使用,内部修改的也可以给外部使用,典型的引用 传递,只能传递变量 ————————————————
版权声明:本文为CSDN博主「知而无涯」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_26963433/article/details/78602866

发布了6 篇原创文章 · 获赞 6 · 访问量 1663
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 1024 设计师: 上身试试

分享到微信朋友圈

×

扫一扫,手机浏览