注册 登录
编程论坛 SQL Server论坛

我写了一串 sql 语句 求大神指点下错误在哪

诡面 发布于 2014-11-18 22:55, 624 次点击
创建一个命名为P_成绩录入的存储过程,用户能够通过该存储过程逐条插入学生的成绩记录,
并且对成绩增加该学生的专业分,如果大于等于90分,专业分加4分;如果大于等于80分,专业分加3分
;如果大于等于70分,专业分加2分;如果大于等于60分,专业分加1分。以上命令组成一个显示事务


create proc P_成绩录入
@学号 varchar(4),@课程号 varchar(3),@成绩 int
as
begin tran
  insert into dbo.成绩(学号,课程号,成绩)
  values(@学号,@课程号,@成绩)
  update dbo.学生
  set 专业分=case
  when  @成绩>=90   then 专业分=专业分+4
  when  @成绩>=80   then 专业分=专业分+3
  when  @成绩>=70   then 专业分=专业分+2
  when  @成绩>=60   then 专业分=专业分+1
  end
  where  学号=@学号
rollback
3 回复
#2
诡面2014-11-18 23:03
请哪位老师解答下 有点迷茫了
#3
mxbing19842014-11-19 08:37
create proc P_成绩录入
@学号 varchar(4),@课程号 varchar(3),@成绩 int
as
begin tran
  insert into dbo.成绩(学号,课程号,成绩)
  values(@学号,@课程号,@成绩)
  update dbo.学生
  set 专业分=isnull(专业分,0)+case
  when  @成绩>=90   then 4
  when  @成绩>=80   then 3
  when  @成绩>=70   then 2
  when  @成绩>=60   then 1
  end
  where  学号=@学号
rollback



create proc P_成绩录入
@学号 varchar(4),@课程号 varchar(3),@成绩 int
as
begin
    --插入之前就算好专业分
    declare @专业分 int
    Set @专业分=case
      when  @成绩>=90   then 4
      when  @成绩>=80   then 3
      when  @成绩>=70   then 2
      when  @成绩>=60   then 1
    end
  
  insert into dbo.成绩(学号,课程号,成绩,专业分)
  values(@学号,@课程号,@成绩,@专业分)
 
 end
#4
playyang1232014-11-20 10:58
    public static void main(String[] args) {
//16. 由命令行输入一个专业分a,使用switch结构求出a的等级。A+4:90-100,
//B+3:80-89,C+2:70-79,D+1:60-69注:将命令行参数赋
//给a(int型)使用的语句为:Int a = Integer.parseInt(args[0]);
        int i;
        System.out.println("输入一个60到100的专业分");
        Scanner input=new Scanner(System.in);
        i=input.nextInt();
        int a=i/10;  
        switch(a){   
        case 10:  System.out.println("专业分为:A+4");   
        break;
        case 9: System.out.println("专业分为:A+4");  
        break;   
        case 8:System.out.println("专业分为:B+3");   
        break;
     case 7:System.out.println("专业分为:C+2");  
          break;   
          case 6:System.out.println("专业分为:D+1");   
          break;
        
            
        }
input.close();
    }
1