sql >> Databasteknik >  >> RDS >> Oracle

FEL:Referera till räknaren som målet för en tilldelning - PL/SQL

Ändra de tidigare svaren för att faktiskt ge dig Pascals triangel, som du nämnde att du försökte i en kommentar:

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.

Både din dbms_output.put_line anrop behövde bara vara dbms_output.put , eftersom det var att skriva ut varje * på en linje för sig. Men du behöver en radbrytning efter varje gång runt a loop, så jag har lagt till en dbms_output.newline i slutet av det. Du sänkte också temp inuti b loop, vilket innebar att den var noll istället för (n-1) för andra gången runt a slinga; men du behöver egentligen ingen separat temp variabel alls eftersom det alltid är samma som (n-a)+1 och +1 lägger bara ett extra mellanslag på varje rad. (Jag gjorde också a loop 1..n eftersom jag antar att du vill ändra värdet på n senare endast på ett ställe). Med n := 8 :

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

Avgörande även om du också måste set serveroutput on format wrapped , annars de inledande blanksteg som du genererar i b slingan kasseras.

Du kan också göra detta i vanlig SQL, även om du måste ange 5 två gånger, eller använd en bindnings- eller substitutionsvariabel:

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

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

Din b och c loops gör bara en manuell lpad verkligen.



  1. Oracle:Skillnaden mellan NULL och EMPTY sträng

  2. Mysql fulltextsökning med matchning och mot

  3. TXT-fil eller databas?

  4. Oracle ORA-12154-fel på lokal IIS, men inte med Visual Studio Development Server