SQL 第七章

-第七章上机一  
USE MySchool  
GO  
EXEC sp_columns Student  --查看表Student中列的信息  
EXEC sp_help Student  --查看表Student的所有信息  
EXEC sp_helpconstraint Student --查看表Student的约束  
  
--上机二  
CREATE PROCEDURE usp_grade_subject  
AS   
   SELECT GradeName,SubjectName,ClassHour FROM Grade   
   INNER JOIN Subject  
   ON Grade.GradeId=Subject.GradeId  
   ORDER BY Subject.GradeId,SubjectNo  
GO  
/*---调用执行存储过程---*/  
EXEC usp_grade_subject   
  
--上机三  
CREATE PROCEDURE usp_query_subject  
  @GradeName VARCHAR(50) = NULL  
AS   
  IF @GradeName IS NULL  
    SELECT GradeName,SubjectName,ClassHour FROM Grade   
    LEFT JOIN Subject   ON Grade.GradeId=Subject.GradeId   
    UNION   
    SELECT GradeName,' ',SUM(ClassHour)FROM Grade  
    LEFT JOIN Subject  ON Grade.GradeId=Subject.GradeId   
    GROUP BY GradeName  
  ELSE  
    SELECT GradeName,SubjectName,ClassHour FROM Grade  
    LEFT JOIN Subject  ON Grade.GradeId=Subject.GradeId   
    WHERE GradeName=@GradeName  
    UNION  
    SELECT GradeName,' ',SUM(ClassHour)FROM Grade  
    LEFT JOIN Subject  ON Grade.GradeId=Subject.GradeId   
    WHERE GradeName=@GradeName  
    GROUP BY GradeName  
GO  
  
  
EXEC usp_query_subject 's2'  
  
--上机四  
CREATE PROCEDURE usp_query_subject  
   @CourseNum INT OUTPUT,    
   @HourNum INT OUTPUT,    
   @GradeName VARCHAR(50)  
AS   
    IF LEN(@GradeName) = 0  
       BEGIN  
          PRINT '学期名称不能为空'  
          RETURN  
       END  
    PRINT '---------学期课程信息如下------------'  
    SELECT GradeName,SubjectName,ClassHour FROM Grade   
    LEFT JOIN Subject ON Grade.GradeId=Subject.GradeId   
    WHERE GradeName=@GradeName  
  
    SELECT @CourseNum=COUNT(0), @HourNum=SUM(ClassHour)  
    FROM  Grade  
    INNER JOIN Subject ON Grade.GradeId=Subject.GradeId   
    WHERE GradeName=@GradeName  
GO  
  
--上机五  
CREATE PROCEDURE usp_insert_subject  
    @SubjectNo int OUTPUT,  
    @GradeId int OUTPUT,  
    @GradeName varchar(50),  
    @SubjectName varchar(50),  
    @ClassHour int = 36  
AS   
    DECLARE @errNum int  
    SET @errNum = 0  
      
    IF (LEN(RTRIM(@SubjectName))=0 OR LEN(RTRIM(@GradeName))=0)  
        RETURN -1  
  
    BEGIN TRANSACTION  
    IF NOT EXISTS(SELECT * FROM Grade WHERE GradeName = @GradeName)  
      BEGIN  
        INSERT INTO Grade (GradeName) VALUES (@GradeName)  
        SET @errNum = @errNum + @@ERROR  
        SELECT @GradeId=@@IDENTITY  
      END  
    ELSE  
        SELECT @GradeId=GradeId FROM Grade WHERE GradeName = @GradeName  
  
    INSERT INTO Subject (SubjectName,ClassHour,GradeId)   
        VALUES (@SubjectName,@ClassHour,@GradeId)  
    SET @errNum = @errNum + @@ERROR  
  
    SELECT @SubjectNo=@@IDENTITY  
  
    IF (@errNum > 0)  
      BEGIN  
        ROLLBACK TRANSACTION  
        RETURN 0   
      END  
    ELSE  
      BEGIN  
        COMMIT TRANSACTION  
        RETURN 1  
      END  
GO  
  
--调用存储过程  
DECLARE @SubjectNo int  
DECLARE @GradeId int  
DECLARE @GradeName varchar(50)  
DECLARE @SubjectName varchar(50)  
DECLARE @ClassHour int  
DECLARE @rt int  
  
SET @GradeName = 'Y2'  
SET @SubjectName = 'Linux'  
SET @ClassHour = 10  
EXEC @rt=usp_insert_subject @SubjectNo OUTPUT,@GradeId OUTPUT,@GradeName,@SubjectName,@ClassHour  
IF (@rt = 1)  
  BEGIN  
    PRINT '增加课程'+@SubjectName+'记录成功'  
    PRINT '学期编号是' + CAST(@GradeId AS varchar(10)) + ',学期名称是' + @GradeName  
    PRINT '课程编号是' + CAST(@SubjectNo AS varchar(10)) + ',课程名称是' + @SubjectName  
  END  
ELSE if (@rt = 0)  
    PRINT '增加课程记录失败!'  
ELSE  
    PRINT '学期名称或课程名称不能为空,请重新执行!'  
GO  

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值