[简单]plsql匿名块使用简单示例

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

   

     全文完

猜你喜欢

转载自53873039oycg.iteye.com/blog/2081876