当前位置:   article > 正文

SQLSqlerver 存储过程使用While出题一年级两位数进位加减法_sql server存储过程while 嵌套相加

sql server存储过程while 嵌套相加

给老大出一部分一年级的练习题,excel一个个想太费劲,想了想还是写个存储过程一次全出来吧。有时候存储过程使用游标挺慢的,这次用while写一下。代码如下:

  1. create procedure [dbo].[UBMP_Cal_TAndO]
  2. as
  3. begin
  4. declare @maxNum int,@minNum int,@currNum int,@iNum int,@GNum int,@result varchar(20),@resultNum int
  5. set @maxNum=99
  6. set @minNum=11
  7. set @currNum=11
  8. delete from UBMP_Biz_Subject
  9. -------------------------11到99退位减法
  10. while @currNum<=@maxNum
  11. begin
  12. set @resultNum=0;
  13. set @iNum=1;
  14. while @iNum<=9
  15. begin
  16. set @GNum=cast(substring(cast(@currNum as varchar(2)),2,1) as int)
  17. if @GNum-@iNum<0
  18. begin
  19. set @result=cast(@currNum as varchar(2))+'-'+cast(@iNum as varchar(2))+'=';
  20. print('个位:'+cast(@GNum as varchar(1))+'被减数:'+cast(@currNum as varchar(2))+'减数:'+cast(@iNum as varchar(1))+@result);
  21. set @resultNum=@currNum-@iNum
  22. insert into UBMP_Biz_Subject values(newid(),'一年级','2位减1位退位减法',@result,@resultNum,getdate())
  23. end
  24. set @iNum=@iNum+1
  25. end
  26. set @currNum=@currNum+1
  27. end
  28. -------------------------11到99进位加法
  29. set @maxNum=99
  30. set @minNum=11
  31. set @currNum=11
  32. while @currNum<=@maxNum
  33. begin
  34. set @resultNum=0;
  35. set @iNum=1;
  36. while @iNum<=9
  37. begin
  38. set @GNum=cast(substring(cast(@currNum as varchar(2)),2,1) as int)
  39. if @GNum+@iNum>10
  40. begin
  41. set @result=cast(@currNum as varchar(2))+'+'+cast(@iNum as varchar(2))+'=';
  42. set @resultNum=@currNum+@iNum;
  43. insert into UBMP_Biz_Subject values(newid(),'一年级','2位加1位进加法',@result,@resultNum,getdate())
  44. end
  45. set @iNum=@iNum+1
  46. end
  47. set @currNum=@currNum+1
  48. end
  49. end

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/article/detail/40219
推荐阅读
相关标签
  

闽ICP备14008679号