给老大出一部分一年级的练习题,excel一个个想太费劲,想了想还是写个存储过程一次全出来吧。有时候存储过程使用游标挺慢的,这次用while写一下。代码如下:
create procedure [dbo].[UBMP_Cal_TAndO]
as
begin
declare @maxNum int,@minNum int,@currNum int,@iNum int,@GNum int,@result varchar(20),@resultNum int
set @maxNum=99
set @minNum=11
set @currNum=11
delete from UBMP_Biz_Subject
-------------------------11到99退位减法
while @currNum<=@maxNum
begin
set @resultNum=0;
set @iNum=1;
while @iNum<=9
begin
set @GNum=cast(substring(cast(@currNum as varchar(2)),2,1) as int)
if @GNum-@iNum<0
begin
set @result=cast(@currNum as varchar(2))+'-'+cast(@iNum as varchar(2))+'=';
print('个位:'+cast(@GNum as varchar(1))+'被减数:'+cast(@currNum as varchar(2))+'减数:'+cast(@iNum as varchar(1))+@result);
set @resultNum=@currNum-@iNum
insert into UBMP_Biz_Subject values(newid(),'一年级','2位减1位退位减法',@result,@resultNum,getdate())
end
set @iNum=@iNum+1
end
set @currNum=@currNum+1
end
-------------------------11到99进位加法
set @maxNum=99
set @minNum=11
set @currNum=11
while @currNum<=@maxNum
begin
set @resultNum=0;
set @iNum=1;
while @iNum<=9
begin
set @GNum=cast(substring(cast(@currNum as varchar(2)),2,1) as int)
if @GNum+@iNum>10
begin
set @result=cast(@currNum as varchar(2))+'+'+cast(@iNum as varchar(2))+'=';
set @resultNum=@currNum+@iNum;
insert into UBMP_Biz_Subject values(newid(),'一年级','2位加1位进加法',@result,@resultNum,getdate())
end
set @iNum=@iNum+1
end
set @currNum=@currNum+1
end
end