这是有声音的视频,请检查播放器或者声音输出设备。
这次的学习内容: 存储过程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
03月 8th, 2011 at 21:06:31 #皮肤癌
兔年吉祥~
[回复]
01月 13th, 2012 at 07:26:06 #Matilda
Your ansewr shows real intelligence.
[回复]
01月 15th, 2012 at 20:25:38 #snemhqmpyvm
d8guY6 thbowiliycqm
[回复]