1. 程式人生 > 其它 >SQL語句建立並執行儲存過程

SQL語句建立並執行儲存過程

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