例1、使用SQL语句在“学生选课”数据库中创建一个名为p_jiaoshi1的存储过程。该存储过程返回“教师”表中所有学历为“硕士研究生”的记录。
use 学生选课;
CREATE PROCEDURE p_jiaoshi1()
BEGIN
select * from teacher where tedu='硕士研究生';
END;
例2、使用SQL语句执行例1中创建的存储过程。
call p_jiaoshi1()
例3、使用SQL语句在“学生选课”数据库中创建一个名为p_jiaoshi2的存储过程。该存储过程能根据用户给定的学历值查询 “teacher”表中对应的记录
CREATE PROCEDURE p_jiaoshi2(in stedu varchar(20))
BEGIN
SELECT * from teacher where tedu=stedu;
END;
例4、用变量名传递参数值的方法执行存储过程p_jiaoshi2,分别查询学历为“本科”和“博士研究生”的记录。
set @stedu1='本科';
set @stedu2='博士研究生';
call p_jiaoshi2(@stedu1);
call p_jiaoshi2(@stedu2);
例5、用按给定表达式值传递参数的方式执行存储过程p_jiaoshi2,分别查找学历为“本科”和“博士研究生”的记录。
call p_jiaoshi2('博士研究生');
call p_jiaoshi2('本科');
例6、创建存储过程p_jiaoshi3,要求能根据用户给定的学历值,统计出“教师”表的所有教师中,学历为该值的教师人数,并将结果以输出变量的形式返回给调用者。
CREATE PROCEDURE p_jiaoshi3(in edu1 VARCHAR(10), OUT tnum INT)
BEGIN
select count(*) into tnum from teacher where tedu = edu1;
END
例7、执行存储过程p_jiaoshi3,统计教师表中学历为“硕士研究生”的教师人数。
call p_jiaoshi3('硕士研究生',@qq)
SELECT @qq
例8、 在“学生选课”数据库中创建一个名为p_jiaoshi4的存储过程,要求能根据用户给定的性别,统计“teacher”表中性别为该值的教师人数,并将结果以输出变量的形式返回给用户。
CREATE PROCEDURE p_jiaoshi4(in sexs VARCHAR(2), out num int)
BEGIN
SELECT COUNT(*) into num from teacher where tgender = sexs;
END
例9、执行存储过程p_jiaoshi4,统计教师表中性别为“男”的教师人数。
call p_jiaoshi4('男',@cc)
select @cc
例10、查看“学生选课”数据库存储过程的信息。
select * from mysql.proc where db='学生选课';
show PROCEDURE status where db = '学生选课';
show PROCEDURE status like '%jiaoshi%';
show create PROCEDURE p_jiaoshi3;
例12、使用SQL语句删除存储过程p_jiaoshi2。
drop PROCEDURE p_jiaoshi2;
例13、创建存储函数返回两个数相加之和。
调用该自定义函数的语句如下: