第7章-游标、存储过程和触发器讲述.ppt
文本预览下载声明
创建和执行存储过程 (4)创建带多个输入参数并有默认值的存储过程 [例5] 查询某个学生某门课程的考试成绩,若没有指定课程,则默认课程为“数据库基础” CREATE PROCEDURE student_grade2 @s_name char(10),@c_name char(20)=‘数据库基础’ AS SELECT Sname, Cname, Grade FROM s,sc,c WHERE s.sno = sc.sno and c.cno = sc.cno and sname = @s_name and cname = @c_name * 7.2 存储过程 创建和执行存储过程 (4)创建带多个输入参数并有默认值的存储过程 调用参数有默认值的存储过程 EXEC student_grade3 吴宾 等价于执行: EXEC student_grade3 吴宾,数据库基础 * 7.2 存储过程 创建和执行存储过程 (5)创建带多个输入参数并均指定默认值的存储过程 [例6]查询指定系、指定性别学生中年龄大于等于指定年龄的学生情况。系的默认值为“计算机系”,性别的默认值为“男生”,年龄的默认值为20 CREATE PROC P_Student @dept char(20) = 计算机系, @sex char(2) = 男, @age int = 20 AS SELECT * FROM Student WHERE Sdept=@dept AND Ssex=@sex AND Sage=@age * 7.2 存储过程 创建和执行存储过程 (5)创建带多个输入参数并均指定默认值的存储过程 执行1:不提供任何参数值。 EXEC P_Student 执行2:提供全部参数值。 EXEC P_Student 信息系, 女, 19 执行3:只提供第二个参数的值。 EXEC P_Student @sex = 女 执行4:只提供第一个和第三个参数的值。 EXEC P_Student @sex = 女 , @age = 19 * 7.2 存储过程 创建和执行存储过程 (6)创建带有输出参数的存储过程 [例7] 计算两个数的和。 CREATE PROCEDURE sum1 @var1 int,@var2 int,@var3 int output As Set @var3=@var1 * @var2 执行此存储过程: Declare @res int Execute sum1 5,7,@res output Print @res * 7.2 存储过程 创建和执行存储过程 (6)创建带输入参数和一个输出参数的存储过程 [例8] 统计指定课程的平均成绩,并将统计的结果用输出参数返回。 CREATE PROCEDURE AvgGrade @cn char(20), @avg_grade int output AS SELECT @avg_grade = AVG(Grade) FROM SC,C WHERE C.Cno = SC.Cno and Cname = @cn * 7.2 存储过程 创建和执行存储过程 (7)创建带输入参数和多个输出参数的存储过程 [例9] 统计指定课程的平均成绩和选课人数,将统计的结果用输出参数返回。 CREATE PROCEDURE Avg_Count @cn char(20), @avg_grade int output, @total int output AS SELECT @avg_grade = AVG(Grade), @total = COUNT(*) FROM SC ,C WHERE C.Cno = SC.Cno and Cname = @cn * 7.2 存储过程 创建和执行存储过程 (8)创建删除数据的存储过程 [例10] 删除考试成绩不及格学生的修课记录。 CREATE PROCEDURE p_DeleteSC AS DELETE FROM sc WHERE grade 60 * 7.2 存储过程 创建和执行存储过程 (9)创建修改数据的存储过程 [例11] 将指定课程的学分增加2分。 CREATE PROCEDURE p_UpdateCredit @cn varchar(20) AS UPDATE course SET credit=credit+2 WHERE cname = @cn * 7.2 存储过程 删除存储过程 DROP PROC [ EDU
显示全部