dsdfsdfzs 2019-05-02 15:20 采纳率: 0%
浏览 219

sql创建存储过程的问题

创建存储过程sp_displayGradeInRow(@sname nchar(10))。
存储过程显示两行信息:“姓名”一行,由@sname和“平均成绩”选择的所有课程名称,@sname的另一行,成绩和平均成绩。 (使用游标获取课程名称和成绩)

  • 写回答

1条回答 默认 最新

  • 憧憬blog 2023-03-15 07:59
    关注

    好的,针对你的问题,我可以给出以下的SQL代码,用于创建存储过程sp_displayGradeInRow(@sname nchar(10)):

    CREATE PROCEDURE sp_displayGradeInRow
    (
        @sname nchar(10)
    )
    AS
    BEGIN
        SET NOCOUNT ON;
        
        DECLARE @course_name nvarchar(50), @grade int, @avg_grade float;
        DECLARE course_cursor CURSOR FOR 
        SELECT course_name, grade FROM table_name WHERE student_name = @sname;
        
        SELECT N'姓名', course_name FROM table_name WHERE student_name = @sname GROUP BY course_name WITH ROLLUP;
        
        OPEN course_cursor;
        
        FETCH NEXT FROM course_cursor INTO @course_name, @grade;
        
        WHILE @@FETCH_STATUS = 0
        BEGIN
            SELECT @avg_grade = AVG(grade) FROM table_name WHERE course_name = @course_name AND student_name != @sname;
            
            SELECT @sname, @grade, @avg_grade;
            
            FETCH NEXT FROM course_cursor INTO @course_name, @grade;
        END
        
        CLOSE course_cursor;
        DEALLOCATE course_cursor;
        
    END
    

    该存储过程使用游标来获取课程名称和成绩,并使用ROLLUP选项对结果按课程名称进行分组,同时考虑到你提问中的要求,存储过程还会显示出该学生的平均成绩及其他学生在该门课程中的平均成绩。需要替换代码中的table_name为你所使用的表名。

    希望我的回答可以对你有所帮助!

    评论

报告相同问题?

悬赏问题

  • ¥20 求数据集和代码#有偿答复
  • ¥15 关于下拉菜单选项关联的问题
  • ¥15 如何修改pca中的feature函数
  • ¥20 java-OJ-健康体检
  • ¥15 rs485的上拉下拉,不会对a-b<-200mv有影响吗,就是接受时,对判断逻辑0有影响吗
  • ¥15 使用phpstudy在云服务器上搭建个人网站
  • ¥15 应该如何判断含间隙的曲柄摇杆机构,轴与轴承是否发生了碰撞?
  • ¥15 vue3+express部署到nginx
  • ¥20 搭建pt1000三线制高精度测温电路
  • ¥15 使用Jdk8自带的算法,和Jdk11自带的加密结果会一样吗,不一样的话有什么解决方案,Jdk不能升级的情况