最近测试需要一批数据,本来使用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
全文完。