SQL語句建立並執行儲存過程
阿新 • • 發佈:2022-05-22
1、利用學生姓名查詢該生選修的課程名、成績,以及任課教師姓名。
USE jiaoxuedb GO CREATE PROCEDURE Pro_1 @Sname_in char(8) AS SELECT Cname,SCORE,Tname FROM Student,SC,Course,TC,Teacher WHERE Student.Sno=SC.Sno AND Course.Cno=SC.Cno AND SC.CNO=TC.Cno AND TC.Tno=Teacher.Tno AND Sname=@Sname_in GO DECLARE @Sname_in char(8) SELECT @Sname_in='宋大方' EXEC Pro_1 @Sname_in
2、查詢某系的學生的最大年齡和最小年齡。
USE jiaoxuedb GO CREATE PROCEDURE Pro_2 @Dept_in char(8), @Agemax_out int OUTPUT, @Agemin_out int OUTPUT AS SELECT @Agemax_out=MAX(Age), @Agemin_out=MIN(Age)FROM Student GROUP BY Dept HAVING Dept=@Dept_in GO DECLARE @Dept_in char(8), @Agemax_out int , @Agemin_out int SELECT @Dept_in='計算機' EXEC Pro_2 @Dept_in,@Agemax_out OUTPUT,@Agemin_out OUTPUT PRINT @Agemax_out PRINT @Agemin_out
3、利用學生姓名和課程名檢索該生該課程的成績。
USE jiaoxuedb GO CREATE PROCEDURE Pro_3 @Sname_in char(8), @Cname_in char(10), @Score_out tinyint OUTPUT AS SELECT @Score_out=Score FROM Student,Course,SC WHERE Student.Sno=SC.Sno AND Course.Cno=SC.Cno AND Sname=@Sname_in AND Cname=@Cname_in GO DECLARE @Sname_in char(8), @Cname_in char(10), @Score_out tinyint SELECT @Sname_in='宋大方' SELECT @Cname_in='計算機基礎' EXEC Pro_3 @Sname_in,@Cname_in,@Score_out OUTPUT PRINT @Score_out
4、根據職稱查詢人數,並給出“副教授”的人數。
USE jiaoxuedb
GO
CREATE PROCEDURE Pro_4
@Prof_in char(10),
@Profn_out tinyint OUTPUT
AS SELECT @Profn_out=COUNT(Prof) FROM Teacher
WHERE Dept=@Dept_in
GO
DECLARE
@Dept_in char(10),
@Profn_out tinyint
SELECT @Prof_in='副教授'
EXEC Pro_4 @Dept_in,@Profn_out OUTPUT
PRINT @Profn_out
5、統計某系某職稱的人數、平均年齡、平均工資、最高工資。
USE jiaoxuedb
GO
CREATE PROCEDURE Pro_5
@Dept_in char(10),
@Prof_in char(10),
@Count_out int OUTPUT,
@Avgage_out int OUTPUT,
@AvgSal_out int OUTPUT,
@MaxSal_out int OUTPUT
AS SELECT @Count_out=COUNT(Prof),@Avgage_out=AVG(Age),@AvgSal_out=AVG(Sal), @MaxSal_out=MAX(Sal) FROM Teacher
WHERE Dept=@Dept_in AND Prof=@Prof_in
GO
DECLARE
@Dept_in char(10),
@Prof_in char(10),
@Count_out int,
@Avgage_out int,
@AvgSal_out int,
@MaxSal_out int
SELECT @Dept_in='計算機'
SELECT @Prof_in='講師'
EXEC Pro_5 @Dept_in,@Prof_in,@Count_out OUT,@Avgage_out OUT,@AvgSal_out OUT,@MaxSal_out OUT
PRINT @Count_out
PRINT @Avgage_out
PRINT @AvgSal_out
PRINT @MaxSal_out
6、查詢某系的教師人數、平均年齡和學生人數。
USE jiaoxuedb
GO
CREATE PROCEDURE Pro_6
@Dept_in char(10),
@Count_out int OUTPUT,
@Avgage_out int OUTPUT,
@Snum_out int OUTPUT
AS SELECT @Count_out=COUNT(Prof),@Avgage_out=AVG(Teacher.Age) FROM Teacher
WHERE Dept=@Dept_in
SELECT @Snum_out=COUNT(Sno) FROM Student
WHERE Dept=@Dept_in
GO
DECLARE
@Dept_in char(10),
@Count_out int,
@Avgage_out int,
@Snum_out int
SELECT @Dept_in='計算機'
EXEC Pro_6 @Dept_in,@Count_out OUT,@Avgage_out OUT,@Snum_out OUT
PRINT @Count_out
PRINT @Avgage_out
PRINT @Snum_out
7、利用課程名查詢選修該課程的學生姓名、系別、成績,並給出“程式設計” 課程的該查詢資訊。
USE jiaoxuedb
GO
CREATE PROCEDURE Pro_7
@Cname_in char(10)
AS SELECT Sname,Dept,Score FROM Student,SC,Course
WHERE Student.Sno=SC.Sno AND Course.Cno=SC.Cno AND Cname=@Cname_in
GO
DECLARE
@Cname_in char(10)
SELECT @Cname_in='程式設計'
EXEC Pro_7 @Cname_in
8、利用教師姓名和課程名檢索該教師該任課的課程名、課時數、選課人數、平均成績、最高成績,並查詢教師“張雪” 的“微機原理”課程的情況記錄。
USE jiaoxuedb
GO
CREATE PROCEDURE Pro_8
@Tname_in char(10),
@Cname_in char(10),
@Cname_out char(10) OUTPUT,
@Chour_out int OUTPUT,
@Cstun_out int OUTPUT,
@AVGScore_out int OUTPUT,
@MAXScore_out int OUTPUT
AS SELECT @Cname_out=Cname,@Chour_out=Chour,@Cstun_out=COUNT(Sno) ,@AVGScore_out=AVG(Score), @MAXScore_out=MAX(Score) FROM Teacher,SC,Course,TC
WHERE Course.Cno=SC.Cno AND Teacher.Tno=TC.Tno AND TC.Cno=SC.Cno AND Tname= @Tname_in
GROUP BY Cname,Chour HAVING Cname=@Cname_in
GO
DECLARE
@Tname_in char(10),
@Cname_in char(10),
@Cname_out char(10) ,
@Chour_out int ,
@Cstun_out int ,
@AVGScore_out int ,
@MAXScore_out int
SELECT @Tname_in='張雪'
SELECT @Cname_in='微機原理'
EXEC Pro_8 @Tname_in,@Cname_in,@Cname_out OUT,@Chour_out OUT,@Cstun_out OUT,@AVGScore_out OUT,@MAXScore_out OUT
PRINT @Cname_out
PRINT @Chour_out
PRINT @Cstun_out
PRINT @AVGScore_out
PRINT @MAXScore_out