个人的一些学习总结,各位大牛给指正指正。
函数
函数的含义
一组预先编译好的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