使用Oracle 打印星型三角形(正三角、反三角、倒三角、逆三角)

学习目标:使用Oracle 打印三角形(正三角、反三角、逆三角等)

提示:这里可以添加学习目标

  1. 编写PL/SQL代码块
  2. 使用多种循环结构(for、while、loop)
  3. 打印不同形状的星型三角形
  4. 掌握循环语句

学习内容一:打印星型正三角

*
**
***
****
*****

提示:这里是示例代码内容

--方法1  采用字符串拼接输出方法
          declare
          s varchar2(50):='';
          begin
            for i in 1..5 loop
              s:=s||'*';
              dbms_output.put_line(s);
            end loop; 
          end;
----while 循环版本--------------
          declare
          s varchar2(50):='';
          i number;
          begin
            i:=0;
            while i<5  loop
              s:=s||'*';
              dbms_output.put_line(s);
              i:=i+1;
            end loop; 
          end;
-----loop 循环版本---------------
          declare
          s varchar2(50):='';
          i number;
          begin
            i:=0;
            loop
              i:=i+1;
              exit when i>5; --当i大于5的时候退出循环
              s:=s||'*';
              dbms_output.put_line(s);
            end loop; 
          end;
--方法2 --采用字符串截取方法
          declare
          s varchar2(50):='*****';
          begin
            for i in 1..5 loop
              --s:=s||'*';
              --dbms_output.put_line(substr(s,6-i,i));
              dbms_output.put_line(substr(s,1,i));
            end loop; 
          end;
--方法3 采用双重循环不换行输出方法
          begin
            for i in 1 .. 5 loop
              for j in 1 .. i loop
                dbms_output.put('*');
              end loop;
              --dbms_output.put_line(''); 
              dbms_output.new_line();-- 换新行
            end loop;
          end;

学习内容二:打印星型反三角

    *
   **
  ***
 ****
*****

提示:这里是示例代码内容

declare
s varchar2(50):='    *****'; --左边四个空格
begin
  for i in 1..5 loop
    dbms_output.put_line(substr(s,i,5)); --字符截取方法处理
  end loop; 
end;
----------------------------------------------
declare  --采用不换行拼接方式输出
s varchar2(50):='*****';
y varchar2(50):='     ';
begin
  for i in 1..5 loop
    dbms_output.put(substr(y,1,5-i));--substr(y,i)
    dbms_output.put_line(substr(s,6-i,i));
  end loop; 
end;
-----------------------------------------
declare
begin  --采用不换行双重循环输出
  for i in 1..5 loop
    for j in 1..5-i loop
      dbms_output.put(' ');
    end loop;
    for j in 1..i loop
      dbms_output.put('*');
    end loop;
    dbms_output.put_line('');
  end loop; 
end;

学习内容三:打印星型倒三角

*****
****
***
**
*

提示:这里是示例代码内容

--方法1
      declare
      s varchar2(50):='*****';
      begin
        for i in 1..5 loop
          --dbms_output.put_line(substr(s,6-i,i));
          dbms_output.put_line(substr(s,1,6-i));--substr(s,i)
        end loop; 
      end;
--方法2
      begin
        for i in 1 .. 5 loop
          for j in 1 .. 6-i loop
            dbms_output.put('*');
          end loop;
          --dbms_output.put_line(''); 
          dbms_output.new_line();-- 换新行
        end loop;
      end;

学习内容四:打印星型 逆三角

*****
 ****
  ***
   **
    *

提示:这里是示例代码内容

declare
s varchar2(50):='    *****';
begin
  for i in 1..5 loop
    dbms_output.put_line(substr(s,6-i,5));
  end loop; 
end;
------------------------
declare
s varchar2(50):='*****';
y varchar2(50):='     ';
begin
  for i in 1..5 loop
    dbms_output.put(substr(y,1,i-1));
    dbms_output.put_line(substr(s,1,6-i));
  end loop; 
end;
---------------------------------------------
declare
begin
  for i in 1..5 loop
    for j in 1..i-1 loop
      dbms_output.put(' ');
    end loop;
    for j in 1..6-i loop
      dbms_output.put('*');
    end loop;
    dbms_output.put_line('');
  end loop; 
end;

你可能感兴趣的:(Oracle,oracle,数据库)