第一题:
第2关:不带参数的SQLServer 储存过程的创建和调用
SET NOCOUNT ON
GO
USE JX
GO
--********** 1、创建存储过程pro_SelectStuAll,用于查询所有学生信息**********--
--********** Begin **********--
CREATE PROCEDURE pro_SelectStuAll AS
SELECT * FROM Student
--********** End **********--
GO
--********** 2、创建存储过程pro_DeleteNoSC,用于删除所有没有选修课程的同学信息**********--
--********** Begin **********--
CREATE PROCEDURE pro_DeleteNoSC AS
DELETE FROM Student
WHERE Sno NOT IN (SELECT Sno FROM SC)
--********** End **********--
GO
--***********3、创建存储过程pro_UpdateSdept,用于把'计算机'系的学生系别修改为'计算机工程'***********--
--********** Begin **********--
CREATE PROCEDURE pro_UpdateSdept AS
UPDATE Student
SET Sdept = '计算机工程'
WHERE Sdept = '计算机'
--********** end **********--
GO
--4、调用存储过程pro_SelectStuAll--
--********** Begin **********--
EXEC pro_SelectStuAll
--********** end **********--
GO
--5、调用存储过程pro_DeleteNoSC--
--********** Begin **********--
EXEC pro_DeleteNoSC
--********** end **********--
GO
--6、调用存储过程pro_UpdateSdept--
--********** Begin **********--
EXEC pro_UpdateSdept
--********** end **********--
-----------------------------------
GO
SELECT * FROM Student
第3关:带输入参数的存储过程的创建和调用
SET NOCOUNT ON
GO
USE JX
GO
--**********1、创建存储过程pro_SelecByJSJ,用以删除指定Sdept的学生信息*************--
--********** Begin **********--
CREATE PROCEDURE pro_DeleteBySdept
@Sdept VARCHAR(50)
AS
BEGIN
DELETE FROM Student
WHERE Sdept = @Sdept
END
--********** end **********--
GO
--**********2、创建存储过程pro_SelecByTprof,用以按照用户指定的职称查询教师的基本信息 *************--
--********** Begin **********--
CREATE PROCEDURE pro_SelecByTprof
@Tprof VARCHAR(50),
@Tsex char(20)
AS
BEGIN
SELECT * FROM Teacher
WHERE Tprof = @Tprof and Tsex = @Tsex
END
--********** end **********--
GO
--**********3、创建存储过程pro_AddTeacher,用以插入指定教工号和姓名的教师信息 *************--
--********** Begin **********--
CREATE PROCEDURE pro_AddTeacher
@Tno VARCHAR(50),
@Tname VARCHAR(50)
AS
BEGIN
INSERT INTO Teacher (Tno, Tname)
VALUES (@Tno, @Tname)
END
--********** end **********--
GO
--**********4、调用存储过程pro_SelecByJSJ,用于删除'计算机'系学生的信息 *************--
--********** Begin **********--
EXEC pro_DeleteBySdept '计算机'
--********** end **********--
GO
--**********5、调用存储过程pro_SelecByTprof,用于查询所有职称为'副教授'的女教师信息 *************--
--********** Begin **********--
EXEC pro_SelecByTprof '副教授' ,'女'
--********** end **********--
GO
--**********6、调用存储过程pro_AddTeacher,用于插入两名教师信息,他们的教工号和姓名分别是:'005','测试君1'和'006','测试君2' *************--
--********** Begin **********--
EXEC pro_AddTeacher '005', '测试君1'
EXEC pro_AddTeacher '006', '测试君2'
--********** end **********--
GO
SELECT * FROM Student
SELECT * FROM Teacher
第4关:带返回值的存储过程的创建和调用
SET NOCOUNT ON
GO
USE JX
GO
--**********1. 创建一个存储过程Pro_com,用于查询指定的学号是否存在选修课的情况,若存在,则输出该生的学号、姓名及选课门数信息并返回1,否则返回0 *************--
--********** Begin **********--
CREATE PROCEDURE Pro_com
@Sno char(5)
AS
BEGIN
DECLARE @Cno INT;
SELECT @Cno = COUNT(*)
FROM SC
WHERE Sno = @Sno;
if @Cno > 0
Begin
SELECT Student.Sno as 学号, Student.Sname as 姓名, @Cno as 选课门数
FROM Student as Student
WHERE Student.Sno = @Sno;
RETURN 1;
END
ELSE
Begin
RETURN 0;
END
END;
--********** end **********--
GO
--**********2. 用存储过程Pro_com,用于查询学号为“21001”的同学的选课情况,若返回值为0的,打印输出“不存在该同学的选课信息!”*************--
--********** Begin **********--
DECLARE @result INT
EXEC @result = Pro_com @Sno = '21001';
IF @result = 0
BEGIN
PRINT '不存在该同学的选课信息!';
END
--********** end **********--
GO
--**********3. 用存储过程Pro_com,用于查询学号为“21011”的同学的选课情况,若返回值为0的,打印输出“不存在该同学的选课信息!”*************--
--********** Begin **********--
DECLARE @result INT
EXEC @result = Pro_com @Sno = '21011';
IF @result = 0
BEGIN
PRINT '不存在该同学的选课信息!';
END
--********** end **********--
GO