declare
 n int :=0;
 m int :=0;
 i int :=0;
 s int ;
 a char :='A';
 begin
 s :=&s;
 for n in 1..s loop
 for m in 1..s-n loop
 dbms_output.put('@');
 end loop;
 for i in 1..2*n-1 loop
 if n%2=0 then
 dbms_output.put(n/2);
 else
 dbms_output.put(a+(n+1)/2-1);
 end if;
 end loop;
 dbms_output.put_line('');
 for n in 1..s loop
 for m in 1..n-1 loop
  dbms_output.put('@');
  end loop;
  for i in 1..2*(s-n)+1 loop
  if n%2=0 then
  dbms_output.put(a+(s-n)/2);
  else
  dbms_output.put((s-n+1)/2);
  end if;
  end loop;
  dbms_output.put_line('');
 end loop;
 end;
 if n%2=0 then
      *
ERROR 位于第 14 行:
ORA-06550: 第 14 行, 第 7 列:
PLS-00103: 出现符号 "2"在需要下列之一时:
( type <an identifier>
<a double-quoted delimited-identifier>
符号 "type在 "2" 继续之前已插入。
ORA-06550: 第 26 行, 第 8 列:
PLS-00103: 出现符号 "2"在需要下列之一时:
( type <an identifier>
<a double-quoted delimited-identifier>
符号 "type在 "2" 继续之前已插入。
ORA-06550: 第 34 行, 第 5 列:
PLS-00103: 出现符号 ";"在需要下列之一时:
loop请大家帮帮忙!

解决方案 »

  1.   

    %这个取余数啊不对啊,用 mod 啊
      

  2.   

    declare
       n int :=0;
       m int :=0;
       i int :=0;
       s int ;
       a char :='A';
       begin
       s :=&s;
       for n in 1..s loop
       for m in 1..s-n loop
       dbms_output.put('@');
       end loop;
       for i in 1..2*n-1 loop
       if mod(n,2)=0 then
       dbms_output.put(n/2);
       else
       dbms_output.put(chr(ascii(a)+(n+1)/2-1));
       end if;
       end loop;
       dbms_output.put_line('');
     end loop;
       for n in 1..s loop
       for m in 1..n-1 loop
        dbms_output.put('@');
        end loop;
        for i in 1..2*(s-n)+1 loop
        if mod(n,2)=0 then
        dbms_output.put(chr(ascii(a)+(s-n)/2));
        else
        dbms_output.put((s-n+1)/2);
        end if;
        end loop;
        dbms_output.put_line('');
       end loop;
    end;
      

  3.   

    SqlServer中的求余是用%,oracle中要用Mod。