在输出后在 plsql 中写一个块

write a block in plsql following output

我想要一些打印 1 到 100 的 PL/SQL 代码。此外,对于可被 3 整除的数字打印 'wel',对于可被 5 整除的数字打印 'come' 以及对于可被 3 整除的数字和 5 然后打印 'welcome'。像这样输出

    1
    2
    wel
    4
    come
    7
    .
    .
    14
   welcome

这是我写的一些代码:

begin
    for i in 1..100 loop
        dbms_output.put_line(i);
       if  mod(i,3)=0 then
            dbms_output.put_line('wel');
        elsif mod(i,5)=0 then
            dbms_output.put_line('come');
        elsif mod(i,3)=0 and mod(i,5)=0 then
            dbms_output.put_line('welcome');
        end if;
    end loop;
end;
/

看起来像是 Fizzbuzz interview question 的变体。您可以使用单个查询:

SELECT nvl(decode(mod(rownum,3),0,'wel')||decode(mod(rownum,5),0,'come'),rownum)
       as Example
FROM xmltable('1 to 100');

DBFiddle Demo

编辑

PL/SQL块:

BEGIN
  FOR i IN (
  SELECT nvl(decode(mod(rownum,3),0,'wel')||decode(mod(rownum,5),0,'come'),rownum)
       as Example
  FROM xmltable('1 to 100')) LOOP
      DBMS_OUTPUT.PUT_LINE(i.Example);
  END LOOP;
END;

DBFiddle Demo2

编辑 2

正如您发布的代码,修复它非常容易:

begin
for i in 1..100 loop
  if mod(i,3)=0 and mod(i,5)=0 then
    dbms_output.put_line('welcome');
  elsif mod(i,5)=0 then
    dbms_output.put_line('come');
  elsif mod(i,3)=0 then
    dbms_output.put_line('wel');
  else 
   dbms_output.put_line(i);
  end if;
end loop;
end;
//

DBFiddle Demo3