Cakupan Variabel PL / SQL & Blok Luar Bagian Dalam: Struktur Bersarang

Daftar Isi:

Anonim

Apa itu Nested Blocks Oracle?

Dalam PL / SQL, setiap blok dapat disarangkan ke dalam blok lain. Mereka disebut sebagai blok bersarang. Blok bersarang sangat umum ketika kita ingin melakukan proses tertentu, dan pada saat yang sama, kode untuk proses ini harus disimpan dalam wadah terpisah (blok).

Konsep blok bersarang akan membantu programmer untuk meningkatkan keterbacaan dengan memisahkan hal-hal kompleks ke dalam setiap blok dan menangani pengecualian untuk setiap blok di dalam blok luar utama.

Dalam tutorial ini, Anda akan belajar-

  • Struktur Blok Bersarang
  • Cakupan di Blok Bersarang: Cakupan Variabel

Struktur Blok Bersarang

Sebuah blok dapat disarangkan ke dalam blok lain. Ini bisa disarangkan baik di bagian eksekusi atau di bagian penanganan pengecualian. Blok ini juga bisa diberi label. Satu blok luar bisa berisi banyak blok dalam. Setiap blok dalam sekali lagi merupakan blok PL / SQL, maka semua properti dan karakteristik blok dalam akan sama dengan blok luar. Gambar di bawah ini memberikan representasi bergambar struktur blok bersarang. Blok induk adalah blok utama dan blok anak adalah blok bersarang.

Di bawah ini adalah sintaks untuk blok bersarang.

Sintaks Blok Bersarang

<>DECLAREBEGIN<>DECLAREBEGIN.EXCEPTIONEND;EXCEPTIONEND;
  • Sintaks di atas menunjukkan blok bersarang yang berisi total dua blok.
  • Blok-blok ini diberi label sebagai 'outer_block' dan 'inner_block'

Cakupan di Blok Bersarang: Cakupan Variabel

Dalam blok bersarang, seseorang perlu memahami ruang lingkup dan visibilitas setiap blok dengan jelas sebelum menggunakannya. Khususnya di blok dalam, elemen dari blok luar dan dalam akan terlihat, Oleh karena itu diperlukan pemahaman yang tepat tentang hal ini.

Poin-poin di bawah ini akan meringkas lebih lanjut tentang cakupan dalam blok bersarang.

  • Elemen yang dideklarasikan di blok luar dan nilai yang ditentukan sebelum definisi blok dalam terlihat di dalam blok dalam.
  • Elemen yang dideklarasikan di blok dalam tidak terlihat di blok luar. Mereka hanya terlihat di dalam blok bagian dalam.
  • Blok luar dan blok dalam dapat memiliki variabel dengan nama yang sama.
  • Dalam kasus variabel dengan nama yang sama, blok dalam secara default, akan merujuk ke variabel yang dideklarasikan hanya dalam blok dalam.
  • Jika blok dalam ingin merujuk variabel blok luar yang memiliki nama yang sama dengan blok dalam, maka blok luar harus LABELED, dan variabel blok luar dapat disebut sebagai '. '

Contoh di bawah ini akan membantu memahami lebih lanjut tentang cakupan ini.

Contoh 1 : Dalam contoh ini, kita akan melihat ruang lingkup variabel di blok dalam dan luar. Juga, kita akan melihat bagaimana mereferensikan variabel menggunakan label blok.

<>DECLAREvarl VARCHAR2(30):='outer_block';var2 VARCHAR2(30):='value before inner block’;BEGIN<>DECLAREvarl VARCHAR2(30):='inner_block';BEGINdbms_output.put_line(varl), ‭ ‬dbms_output.put_line(OUTER_BLOCKvar1);dbms_output.put_line(var2);END;var2:='value after inner block';END;/

Penjelasan Kode:

  • Baris kode 1 : Memberi label pada blok luar sebagai "OUTER_BLOCK".
  • Baris kode 3 : Mendeklarasikan variabel 'var1' sebagai VARCHAR2 (30) dengan nilai awal "blok luar".
  • Baris kode 4 : Mendeklarasikan variabel 'var2' sebagai VARCHAR2 (30) dengan nilai awal "nilai sebelum blok dalam".
  • Baris kode 6: Memberi label pada blok dalam sebagai "INNER_BLOCK"
  • Baris kode 8: Mendeklarasikan variabel 'var1' di blok dalam sebagai VARCHAR2 (30) dengan nilai awal "blok dalam".
  • Baris kode 10: Mencetak nilai 'var1'. Karena tidak ada label yang disebutkan secara default, itu akan mengambil nilai dari blok dalam, karenanya mencetak pesan 'inner_block'.
  • Baris kode 11: Mencetak nilai variabel blok luar 'var1'. Karena blok bagian dalam memiliki variabel dengan nama yang sama, kita perlu merujuk ke label blok luar. Dengan demikian mencetak pesan 'blok luar'.
  • Baris kode 12: Mencetak nilai variabel blok luar 'var2'. Karena tidak ada variabel dengan nama ini yang ada di blok dalam, secara default ini akan mengambil nilai dari blok luar, maka mencetak pesan 'nilai sebelum blok dalam'.
  • Variabel 'var2' di blok luar telah ditetapkan dengan nilai 'nilai setelah blok dalam'. Tetapi penugasan ini terjadi setelah definisi blok dalam. Karenanya nilai ini tidak ada di blok dalam.

Contoh 2 : Dalam contoh ini, kita akan menemukan selisih antara dua angka, satu dideklarasikan di blok luar dan satu lagi di blok dalam. Keduanya akan memiliki nama yang sama. Mari kita lihat bagaimana label blok berguna dalam merujuk variabel-variabel ini.

<>DECLAREln_val NUMBER :=5;BEGIN<>DECLAREln_val NUMBER :=3;BEGINdbms_output.put_line(The difference between outer block and inner block variable is:'||' outer_block. ln_val-inner_block.ln_val);END;END;/

Penjelasan Kode:

  • Baris kode 1 : Memberi label pada blok luar sebagai "OUTER_BLOCK".
  • Baris kode 3 : Mendeklarasikan variabel 'ln_val' sebagai NOMOR dengan nilai awal "5".
  • Baris kode 5: Memberi label pada blok dalam sebagai "INNER_BLOCK"
  • Baris kode 7: Mendeklarasikan variabel 'ln_val' di blok dalam sebagai NOMOR dengan nilai awal "3".
  • Baris kode 9: Mencetak selisih nilai 'ln_val' dari blok luar dan dalam. Format ". " digunakan untuk merujuk variabel ini guna menghindari konflik karena nama variabel yang sama.

Ringkasan

Dalam tutorial ini, kita telah mempelajari cara membuat blok bersarang dan cara menangani ruang lingkup di blok dalam dan blok luar. Kami juga telah melihat contoh di mana variabel dari blok dalam dan luar dirujuk ke dalam blok dalam.