最近测试需要一批数据,本来使用Java写好了,无奈测试不会用java,只好把代码改为plsql的匿名块,由于没有写文件的权限,结果使用dbms_output.put_line打印出来,代码如下:
declare
i number := 1;
totalNum number;/** 总数量*/
j number := 1;
tempStr varchar2(15);
startStr number(15) := 10000000000000;
temp number := 0;
sum1 number := 0;
sum2 number := 0;
total number := 0;
begin
totalNum := &1;
while j <= totalNum loop
i := 1;
temp := 0;
sum1 := 0;
sum2 := 0;
total := 0;
tempStr := to_char(startStr);
while i <= length(tempStr) loop
temp := to_number(substr(startStr, i, 1));
if (mod(i - 1, 2) = 0) then
sum1 := sum1 + temp;
else
temp := temp * 2;
if (temp < 10) then
sum2 := sum2 + temp;
else
sum2 := sum2 + 1 + temp - 10;
end if;
end if;
i := i + 1;
end loop;
total := sum1 + sum2;
if (mod(total, 10) = 0) then
tempStr := startStr || '0';
else
temp := mod((10 - mod(total, 10)), 10);
tempStr := tempStr || temp;
end if;
dbms_output.put_line(tempStr);
j := j + 1;
startStr := startStr + 1;
end loop;
end;
结果如下:
如果只是简单的单调递增,可以使用下面的sql:
select 10000000000000+level
from dual
connect by level <= 1000
全文完。