Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

GALAT:Referensikan penghitung sebagai target tugas - PL/SQL

Memodifikasi jawaban sebelumnya untuk benar-benar memberi Anda segitiga Pascal, yang Anda sebutkan sedang Anda coba dalam komentar:

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.

Baik dbms_output.put_line . Anda panggilan hanya perlu dbms_output.put , karena itu mencetak setiap * pada baris tersendiri. Tetapi Anda memang membutuhkan jeda baris setelah setiap kali di sekitar a loop, jadi saya telah menambahkan dbms_output.newline di akhir itu. Anda juga mengurangi temp di dalam b loop, yang berarti nol, bukan (n-1) untuk kedua kalinya di sekitar a lingkaran; tetapi Anda tidak benar-benar membutuhkan temp yang terpisah variabel sama sekali karena itu selalu sama dengan (n-a)+1 dan +1 hanya menempatkan ruang ekstra di setiap baris. (Saya juga membuat a loop 1..n karena saya berasumsi Anda ingin mengubah nilai n nanti di satu tempat saja). Dengan n := 8 :

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

Yang terpenting, Anda juga harus set serveroutput on format wrapped , jika tidak, spasi utama yang Anda hasilkan di b loop dibuang.

Anda juga dapat melakukan ini dalam SQL biasa, meskipun Anda harus menyediakan 5 dua kali, atau gunakan variabel ikat atau substitusi:

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

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

b . Anda dan c loop hanya melakukan lpad manual sungguh.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Kesalahan sintaks Oracle

  2. java.sql.SQLException:ORA-00932:tipe data tidak konsisten:NOMOR yang diharapkan mendapat BINARY

  3. Simpan data tanggal-waktu sebagai angka

  4. Perbaiki "Tidak dapat menginstal di Homebrew pada prosesor ARM di awalan default Intel (/ usr / lokal)!"

  5. Nomor Oracle Dapper (10,0) dikembalikan sebagai kesalahan Pengurai Desimal