MySchool 07 上机

来源:互联网 发布:java path环境变量设置 编辑:程序博客网 时间:2024/06/05 16:31
  1. --第七章上机一  
  2. USE MySchool  
  3. GO  
  4. EXEC sp_columns Student  --查看表Student中列的信息  
  5. EXEC sp_help Student  --查看表Student的所有信息  
  6. EXEC sp_helpconstraint Student --查看表Student的约束  
  7.   
  8. --上机二  
  9. CREATE PROCEDURE usp_grade_subject  
  10. AS   
  11.    SELECT GradeName,SubjectName,ClassHour FROM Grade   
  12.    INNER JOIN Subject  
  13.    ON Grade.GradeId=Subject.GradeId  
  14.    ORDER BY Subject.GradeId,SubjectNo  
  15. GO  
  16. /*---调用执行存储过程---*/  
  17. EXEC usp_grade_subject   
  18.   
  19. --上机三  
  20. CREATE PROCEDURE usp_query_subject  
  21.   @GradeName VARCHAR(50) = NULL  
  22. AS   
  23.   IF @GradeName IS NULL  
  24.     SELECT GradeName,SubjectName,ClassHour FROM Grade   
  25.     LEFT JOIN Subject   ON Grade.GradeId=Subject.GradeId   
  26.     UNION   
  27.     SELECT GradeName,' ',SUM(ClassHour)FROM Grade  
  28.     LEFT JOIN Subject  ON Grade.GradeId=Subject.GradeId   
  29.     GROUP BY GradeName  
  30.   ELSE  
  31.     SELECT GradeName,SubjectName,ClassHour FROM Grade  
  32.     LEFT JOIN Subject  ON Grade.GradeId=Subject.GradeId   
  33.     WHERE GradeName=@GradeName  
  34.     UNION  
  35.     SELECT GradeName,' ',SUM(ClassHour)FROM Grade  
  36.     LEFT JOIN Subject  ON Grade.GradeId=Subject.GradeId   
  37.     WHERE GradeName=@GradeName  
  38.     GROUP BY GradeName  
  39. GO  
  40.   
  41.   
  42. EXEC usp_query_subject 's2'  
  43.   
  44. --上机四  
  45. CREATE PROCEDURE usp_query_subject  
  46.    @CourseNum INT OUTPUT,    
  47.    @HourNum INT OUTPUT,    
  48.    @GradeName VARCHAR(50)  
  49. AS   
  50.     IF LEN(@GradeName) = 0  
  51.        BEGIN  
  52.           PRINT '学期名称不能为空'  
  53.           RETURN  
  54.        END  
  55.     PRINT '---------学期课程信息如下------------'  
  56.     SELECT GradeName,SubjectName,ClassHour FROM Grade   
  57.     LEFT JOIN Subject ON Grade.GradeId=Subject.GradeId   
  58.     WHERE GradeName=@GradeName  
  59.   
  60.     SELECT @CourseNum=COUNT(0), @HourNum=SUM(ClassHour)  
  61.     FROM  Grade  
  62.     INNER JOIN Subject ON Grade.GradeId=Subject.GradeId   
  63.     WHERE GradeName=@GradeName  
  64. GO  
  65.   
  66. --上机五  
  67. CREATE PROCEDURE usp_insert_subject  
  68.     @SubjectNo int OUTPUT,  
  69.     @GradeId int OUTPUT,  
  70.     @GradeName varchar(50),  
  71.     @SubjectName varchar(50),  
  72.     @ClassHour int = 36  
  73. AS   
  74.     DECLARE @errNum int  
  75.     SET @errNum = 0  
  76.       
  77.     IF (LEN(RTRIM(@SubjectName))=0 OR LEN(RTRIM(@GradeName))=0)  
  78.         RETURN -1  
  79.   
  80.     BEGIN TRANSACTION  
  81.     IF NOT EXISTS(SELECT * FROM Grade WHERE GradeName = @GradeName)  
  82.       BEGIN  
  83.         INSERT INTO Grade (GradeName) VALUES (@GradeName)  
  84.         SET @errNum = @errNum + @@ERROR  
  85.         SELECT @GradeId=@@IDENTITY  
  86.       END  
  87.     ELSE  
  88.         SELECT @GradeId=GradeId FROM Grade WHERE GradeName = @GradeName  
  89.   
  90.     INSERT INTO Subject (SubjectName,ClassHour,GradeId)   
  91.         VALUES (@SubjectName,@ClassHour,@GradeId)  
  92.     SET @errNum = @errNum + @@ERROR  
  93.   
  94.     SELECT @SubjectNo=@@IDENTITY  
  95.   
  96.     IF (@errNum > 0)  
  97.       BEGIN  
  98.         ROLLBACK TRANSACTION  
  99.         RETURN 0   
  100.       END  
  101.     ELSE  
  102.       BEGIN  
  103.         COMMIT TRANSACTION  
  104.         RETURN 1  
  105.       END  
  106. GO  
  107.   
  108. --调用存储过程  
  109. DECLARE @SubjectNo int  
  110. DECLARE @GradeId int  
  111. DECLARE @GradeName varchar(50)  
  112. DECLARE @SubjectName varchar(50)  
  113. DECLARE @ClassHour int  
  114. DECLARE @rt int  
  115.   
  116. SET @GradeName = 'Y2'  
  117. SET @SubjectName = 'Linux'  
  118. SET @ClassHour = 10  
  119. EXEC @rt=usp_insert_subject @SubjectNo OUTPUT,@GradeId OUTPUT,@GradeName,@SubjectName,@ClassHour  
  120. IF (@rt = 1)  
  121.   BEGIN  
  122.     PRINT '增加课程'+@SubjectName+'记录成功'  
  123.     PRINT '学期编号是' + CAST(@GradeId AS varchar(10)) + ',学期名称是' + @GradeName  
  124.     PRINT '课程编号是' + CAST(@SubjectNo AS varchar(10)) + ',课程名称是' + @SubjectName  
  125.   END  
  126. ELSE if (@rt = 0)  
  127.     PRINT '增加课程记录失败!'  
  128. ELSE  
  129.     PRINT '学期名称或课程名称不能为空,请重新执行!'  
  130. GO  
1 0
原创粉丝点击