这是有声音的视频,请检查播放器或者声音输出设备。

这次的学习内容: 存储过程procedure 与 存储函数function

==============================

create database xue_xiao character set utf8 collate utf8_general_ci;

use xue_xiao;

create table ban_ji(
id int(20) not null primary key,
ban_ming varchar(15) not null
);

insert into ban_ji values(1,'一年级(1)班'),(2,'一年级(2)班'),(3,'一年级(3)班');

create table xue_sheng(
id int(20) auto_increment not null primary key,
xing_ming varchar(50) not null,
yu_wen int,
shu_xue int,
bj_id int not null,
CONSTRAINT fk_xue_sheng FOREIGN KEY(bj_id) REFERENCES ban_ji(id)
);

insert into xue_sheng(xing_ming,yu_wen,shu_xue,bj_id) values
('张三',90,70,1),('李四',40,50,2),('李小红',80,75,1),('陈小明',75,80,3);

================================================
创建存储过程
delimiter //

create procedure simpleproc(out param1 int)
begin
select sum(yu_wen) into param1 from xue_sheng;
end

//

delimiter ;

调用存储过程
call simpleproc(@a);

select @a;

===================================================
带输入,输出参数的存储过程

drop procedure if exists simpleproc;

delimiter //

create procedure simpleproc(IN id int,OUT result1 varchar(100))
begin
select xing_ming into result1 from xue_sheng where xue_sheng.id=id;
end
//

delimiter ;

call simpleproc( 1 ,@a);

select @a;

=======================================
存储函数里面声明变量和赋值,逻辑判断
drop procedure if exists simpleproc;

delimiter //

create procedure simpleproc(IN in_name varchar(50),OUT result_1 varchar(150))
begin
declare temp_1 int;
declare temp_2 int default 60;

select (yu_wen+shu_xue)/2 into temp_1 from xue_sheng where xing_ming=in_name;

if temp_1 >= temp_2 then
set result_1 = '及格';
else
set result_1 = '不及格';
end if;

end
//

delimiter ;

call simpleproc( '张三' ,@a);
select @a;

call simpleproc( '李四' ,@a);
select @a;

==============================================
存储函数

delimiter //

create function hello( s char(20)) returns int
deterministic
begin
declare temp_sum int;
select yu_wen+shu_xue into temp_sum from xue_sheng where xing_ming=s;
return temp_sum;
end
//

delimiter ;

select hello('张三');

select hello('李四');

================================
针对上面的例子,简单总结一下 存储过程 和 存储函数 一些区别

存储过程使用 IN 传入参数, 使用 OUT 参数返回值。

而存储函数 直接写参数进行传入, 使用 returns 返回值。

在调用方面也有区别 call 存储过程名字, 而函数通过 select 存储函数。

视频就到这里结束了 88


“mysql_5.5.8_教程_08 存储过程procedure 与 存储函数function”有3个评论

  1. 03月 8th, 2011 at 21:06:31 #皮肤癌

    兔年吉祥~

    [回复]

  2. 01月 13th, 2012 at 07:26:06 #Matilda

    Your ansewr shows real intelligence.

    [回复]

  3. 01月 15th, 2012 at 20:25:38 #snemhqmpyvm

    d8guY6 thbowiliycqm

    [回复]

有任何疑问或建议,可以给作者留言:



公告:

  • 2010年5月之前的视频是文字解说演示,没有声音。
  • 2010年5月以后的视频全部带声音。