sql >> Database >  >> RDS >> Oracle

FOUT:Verwijs naar de teller als het doel van een opdracht - PL/SQL

De vorige antwoorden aanpassen om je de driehoek van Pascal te geven, waarvan je in een opmerking zei dat je het probeerde:

set serveroutput on format wrapped
declare
   n number(2):=5;
begin
  for a in 1..n loop
    for b in 1..n-a loop
      dbms_output.put(' ');
    end loop;
    for c in 1..2*a-1 loop
      dbms_output.put('*');
    end loop;
    dbms_output.new_line;
  end loop;
end;
/

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

PL/SQL procedure successfully completed.

Zowel uw dbms_output.put_line oproepen moesten gewoon dbms_output.put . zijn , want dat was het afdrukken van elke * op zijn eigen lijn. Maar je hebt wel een regeleinde nodig na elke keer rond de a loop, dus ik heb een dbms_output.newline . toegevoegd aan het einde daarvan. Je verlaagde ook temp binnen de b lus, wat betekende dat het nul was in plaats van (n-1) voor de tweede keer rond de a lus; maar je hebt niet echt een aparte temp nodig variabele, want dat is altijd hetzelfde als (n-a)+1 en de +1 zet gewoon een extra spatie op elke regel. (Ik heb ook de a . gemaakt loop 1..n aangezien ik aanneem dat je de waarde van n . wilt wijzigen later op slechts één plaats). Met n := 8 :

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

Cruciaal is echter dat je ook set serveroutput on format wrapped , anders de voorloopspaties die u genereert in de b loop worden verwijderd.

U kunt dit ook in gewone SQL doen, hoewel u de 5 . moet opgeven twee keer, of gebruik een bind- of vervangingsvariabele:

select lpad(' ', 5 - level, ' ') || rpad('*', (level * 2) - 1, '*') as pascal
from dual
connect by level <= 5

PASCAL
------------------------------
    *
   ***
  *****
 *******
*********

Uw b en c loops doen gewoon een handmatige lpad echt.



  1. Dynamische variabelenamen in MySQL

  2. Hoe rijen uit een json-array te extraheren met behulp van de mysql udf json_extract 0.4.0?

  3. Variabelen gebruiken in MySQL UPDATE (PHP/MySQL)

  4. Postgres dwingen om te installeren met UTF8-codering, niet met LATIN1?