原PL/SQL语句:declare
m number;
begin
dbms_output.put_line('100以内的素数有:');
<<outer>>
For n in 1..100 loop
<<inner>>
For j in 2..(n-1) loop
m:=j;
exit when mod(n,j)=0;
end loop inner;
if m>=(n-1) then
dbms_output.put(n||' '); -- 为什么没有输出呢?用下面的换行输出就有输出内容 -- dbms_output.put_line(n);
  end if;
end loop outer;
end;
/dbms_output.put(n||' ')
运行结果贴图1:dbms_output.put_line(n)
运行结果贴图2:
已经设置了set serveroutput on,dbms_output.put('随便一些东西也不行'); 问题在哪呢?
求教各位了,我用的是Oralce 11G

解决方案 »

  1.   

    dbms_output.put后必须再调用dbms_output.put_line才能将结果显示,因为put是没有输出回车,也就是说这一行还没结束,所以看不见。
      

  2.   

    嗯,我将代码改成以下这样,问题解决了!declare
    m number;
    begin
    dbms_output.put_line('100以内的素数有:');
    <<outer>>
    For n in 1..100 loop
    <<inner>>
    For j in 2..(n-1) loop
    m:=j;
    exit when mod(n,j)=0;
    end loop inner;
    if m>=(n-1) then
    dbms_output.put(n||' ');
    end if;
    end loop outer;
    dbms_output.put_line('');
    end;
    /