mysql 存储过程与自义定函数

1、什么是存储过程?
    带有逻辑性的一组sql语句集,它被编译并与存储在数据库中,称之为持久性模块,可以反复使用;
2、怎么创建存储过程?
   

 drop procedure if exists findallStudent; -- 判断是否存在,存在就删除
 delimiter $ -- 声明结束符号,相当于我们书写sql时的";"
 create procedure findallstudent();
 begin
    select*from student;
    end$ -- 结束$

 call findallstudent(); -- 调用

3、存储过程有哪些参数类型?

(1)in 输入参数  调用时必须制定,
(2)out 输出参数 可以被存储过程改变,并可以返回
(3)inout 输入输出参数 调用时指定,并且可以返回

4、代码示例

   4.1 代码示例(1):用户输入数字1-7,输出对应的星期一到星期日;

drop procedure if exists print;
delimiter $
create procedure print(in num int,out  result varchar(10))
begin
	if num=1 then
		set result='星期一';
	elseif num=2 then
		set result='星期二';
	elseif num=3 then
		set result='星期三';
	elseif num=4 then
		set result='星期四';
	elseif num=5 then
		set result='星期五';
	elseif num=6 then
		set result='星期六';
	elseif num=7 then
		set result='星期天'; 
	else  
		set result='未知';
	end if;
end$

call print(5,@result);
select @result'星期几';

    4.2 代码示例(2):分页

 

delimiter $
drop procedure if exists pro_page$
create procedure pro_page(in pageno int,in pagesize int)
begin
	declare num int;
	set num=(pageno-1)*pagesize;
	select *from emp limit num,pagesize;
end$
delimiter ;
-- 调用
call pro_page(3,3);

   4.3 代码示例(3):case语句的mysql自义定函数

delimiter $
drop function if exists fun3$
create function fun3(num int)
returns varchar(20)
	case num
	when 1 then 
		return '您输入的是1';
	when 2 then 
		return '您输入的是2';
	else 
		return '您输入的数字不能识别';
	end case;
$
delimiter ;
select fun3();

5、存储过程与自定义函数的区别 

    (1)、存储过程实现的功能要复杂一些,而函数的的针对性更强 ;
    (2)、存储的过程可以返回多个值,函数只能有一个返回值 ;
    (3)、存储过程一般独立的执行,而函数可以作为其他 SQL语句的组成部分来实现 ;
    (4)、过程 通俗易懂的说法:它只是将其中的程序执行一遍 ;
    (5)、函数 通俗易懂的说法:它不但将其中的程序执行一遍,还返回一个值。

6、存储过程的优缺点

  6.1优点

     1)、性能高:首先在性能上的提高,比起通过应用程序发送sql语句给数据库执行,让数据库自己内部执行存储过程效率更                      高、速度更快(存储过程将sql编译好后存在数据库目录下);
     2)、减少网络流量的开支:存储过程还减少了应用程序同服务器自己的信息交互频率,可以想象在不是使用存储过程的情况,

               应用程序需要发送多条sql指令给服务器,而使用存储过程则只要一条调用存储过程的语句,然后获取需要的数据就ok                     了。
     3)、可复用性强:存储过程重用性比较高,并且是透明的,因为保存在数据库里面所以对任何应用来说都可以使用。新的应

              用只需要调用相应的存储过程就可以得到相应的数据服务。
     4)、安全性强:存储过程也是种安全的做法,数据库管理员可以对那些没有权限访问数据库中的表格的应用,给他们使用存

              储过程的权限来获得数据服务,可以看到这个时候这些存储过程好像我们编程里面的”接口“这个概念。对于安全性要求很                高的系统,例如银行,基本上常用的操作都是通过存储过程或者函数来进行的,这样完全对应用”隐藏“了表格。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值