可以用分段形式打印declare
num number;
i number;
n number;
cursor t_sor is
select col_name from table_name where ...;
begin
for v_sor in t_sor loop
num:=length(v_sor.col_name);
i:=1;
n:=num/10;--分十次
loop
exit when n>num;
dbms_output.put_line(substr(v_sor.col_name,i,n));
i:=n;
n:=n+n;
end loop;
end loop;
end;
/

解决方案 »

  1.   

    sorry,误笔....
    begin
    for v_sor in t_sor loop
    num:=length(v_sor.col_name);
    i:=1;
    n:=trunc(num/10);  --分十次
    m:=mod(num,10)
    loop
    exit when n>num;
    if i=1 then
    dbms_output.put_line(substr(v_sor.col_name,i,n));
    elsif n=n*10 then
    dbms_output.put_line(substr(v_sor.col_name,i,m));
    else
    dbms_output.put_line(substr(v_sor.col_name,i,i));
    end if;
    i:=n;
    n:=n+n;
    end loop;
    end loop;
    end;
    /
    看起来比较烦人,楼主优化一下吧。