Tuesday, October 10, 2017

Perkenalan dengan PL / SQL Nested Block

Nested Block berarti menanamkan satu atau lebih blok PL / SQL di dalam blok PL / SQL lain yang memberi kamu kendali yang lebih baik terhadap eksekusi program dan exception handling.

Mari kita lihat contoh berikut ini:

SET SERVEROUTPUT ON SIZE 1000000;
DECLARE
  n_emp_id EMPLOYEES.EMPLOYEE_ID%TYPE := &emp_id1;
BEGIN
  DECLARE
    n_emp_id employees.employee_id%TYPE := &emp_id2;
    v_name   employees.first_name%TYPE;
  BEGIN
    SELECT first_name
    INTO v_name
    FROM employees
    WHERE employee_id = n_emp_id;

    DBMS_OUTPUT.PUT_LINE('First name of employee ' || n_emp_id ||
                                       ' is ' || v_name);
    EXCEPTION
      WHEN no_data_found THEN
        DBMS_OUTPUT.PUT_LINE('Employee ' || n_emp_id || ' not found');
  END;
END;
/


Kita memiliki blok PL / SQL yang bersarang di dalam blok PL / SQL lain pada contoh di atas. Blok PL / SQL luar disebut blok induk atau blok penutup dan blok PL / SQL bagian dalam dikenal sebagai balok anak, blok bersarang atau blok tertutup.

PL / SQL bersarang blok



Jika kamu melihat kode dengan hati-hati, kamu akan melihat bahwa kita memiliki dua variabel dengan nama yang sama n_emp_id di bagian deklarasi blok orang tua dan anak. Hal ini diperbolehkan dalam skenario ini.

Pertanyaannya di sini adalah variabel mana yang diterima oleh pernyataan SELECT? Jika kamu menjalankan kode di SQL * PLUS kamu akan melihat bahwa pernyataan SELECT akan menerima variabel di blok anak. Mengapa? Karena PL / SQL memberikan preferensi pertama pada variabel di dalam bloknya sendiri.

Jika variabel tidak ditemukan, PL / SQL akan mencari variabel di blok induk dan mengatasinya. Jika tidak ada variabel seperti itu, PL / SQL akan mengeluarkan kesalahan. Dalam kasus ini, variabel v_emp_id di blok anak menimpa variabel di blok induk.

Perhatikan bahwa bukan praktik yang baik untuk memiliki beberapa variabel yang memiliki nama yang sama di blok yang berbeda. Kami mengambil contoh ini hanya untuk demonstrasi saja.

Label Blok PL / SQL

Jadi bagaimana jika kamu ingin merujuk pada variabel di blok induk di dalam blok anak di contoh di atas? PL / SQL memberi Anda fitur yang disebut label blok sehingga kamu dapat memenuhi semua referensi ke variabel di dalam blok melalui label.

Untuk memberi label blok, kamu hanya perlu memberi label nama sebelum bagian deklarasi sebagai berikut:

<<block_label>>
DECLARE
...
BEGIN
...
END;

Kemudian, Anda bisa merujuk ke sebuah variabel di dalam blok dengan menggunakan notasi titik (.) Seperti di bawah ini:

block_label.variable_name;
Berikut adalah contoh sederhana penggunaan label blok:

SET SERVEROUTPUT ON SIZE 1000000;
<<label>>
DECLARE
  v_name varchar2(25) := 'Maria';
BEGIN
  DBMS_OUTPUT.PUT_LINE(label.v_name);
END;
/

Dan kita bisa menulis ulang contoh yang memiliki beberapa variabel dengan nama yang sama menggunakan label blok sebagai berikut:

SET SERVEROUTPUT ON SIZE 1000000;
<<parent>>
DECLARE
  n_emp_id EMPLOYEES.EMPLOYEE_ID%TYPE := &emp_id1;
BEGIN
  <<child>>
  DECLARE
    n_emp_id employees.employee_id%TYPE := &emp_id2;
    v_name   employees.first_name%TYPE;
  BEGIN
    SELECT first_name
    INTO v_name
    FROM employees
    WHERE employee_id = parent.n_emp_id;

    DBMS_OUTPUT.PUT_LINE('First name of employee ' || parent.n_emp_id ||
                         ' is ' || child.v_name);

    EXCEPTION
      WHEN no_data_found THEN
        DBMS_OUTPUT.PUT_LINE('Employee ' || parent.n_emp_id || ' not found');
  END;
END;
/

Ada beberapa keuntungan menggunakan label blok PL / SQL:

  •     Perbaiki keterbacaan kode.
  •     Dapatkan kontrol eksekusi kode yang lebih baik karena label blok bisa menjadi sasaran pernyataan EXIT dan CONTINUE.
  •     Memungkinkan Anda untuk memenuhi syarat referensi ke variabel di blok induk yang memiliki nama yang sama dengan variabel di blok anak menggunakan notasi titik (.)

Dalam tutorial ini, kamu telah belajar bagaimana bekerja dengan PL / SQL nested block dan bagaimana menggunakan label blok untuk memenuhi syarat referensi ke variabel dari blok induk yang memiliki nama yang sama dengan variabel pada blok anak.


sumber gambar dan referensi : http://www.plsqltutorial.com

Struktur blok PL / SQL dan blok anonim


PL / SQL unit program mengatur kode menjadi blok. Blok tanpa nama dikenal sebagai blok anonim. Blok anonim adalah unit yang paling sederhana di PL / SQL. Ini disebut blok anonim karena tidak tersimpan dalam database Oracle.

Blok anonim adalah satu-satunya penggunaan dan berguna dalam situasi tertentu seperti membuat unit uji.
Di bawah ini contoh ilustrasi sintaks blok anonim:

[DECLARE]
   Declaration statements;
BEGIN
   Execution statements;
  [EXCEPTION]
      Exception handling statements;
END;

Mari kita lihat struktur blok PL / SQL secara lebih rinci.

Struktur Blok PL / SQL
sumber:http://www.plsqltutorial.com

Struktur Blok PL / SQL

Blok anonim memiliki tiga bagian dasar yaitu deklarasi, eksekusi, dan penanganan pengecualian. Hanya bagian eksekusi yang wajib dan yang lainnya bersifat opsional.

Bagian deklarasi memungkinkanmu menentukan tipe data, struktur, dan variabel. kamu akan sering mendeklarasikan variabel di bagian deklarasi dengan memberi mereka nama, tipe data, dan nilai awal.

Bagian eksekusi diperlukan dalam struktur blok dan harus memiliki setidaknya satu pernyataan. Bagian eksekusi adalah tempat di mana kamu memasukkan kode eksekusi atau kode logika bisnis. kamu dapat menggunakan pernyataan prosedural dan SQL di dalam bagian eksekusi.

Bagian exception handling( penanganan pengecualian ) dimulai dengan kata kunci EXCEPTION. Bagian pengecualian adalah tempat dimana kamu meletakkan kode untuk menangani pengecualian. kamu bisa menangkap atau menangani pengecualian di bagian pengecualian.

Perhatikan bahwa slash forward tunggal (/) adalah sinyal untuk menginstruksikan SQL * Plus untuk mengeksekusi blok PL / SQL.

    SQL * Plus adalah alat klien database Oracle yang mengeksekusi pernyataan PL / SQL dan mengeluarkan hasil query. SQL * Plus menyediakan administrator dan programmer dengan antarmuka command-line untuk bekerja dengan database Oracle. SQL * Plus sering disebut dengan SQLPLUS.

Contoh struktur blok PL / SQL


Mari kita lihat blok PL / SQL paling sederhana yang tidak melakukan apa-apa.
BEGIN
   NULL;
END;



Jika kamu menjalankan blok anonim di atas di SQL * Plus, kamu akan melihat bahwa pesan tersebut mengeluarkan pesan yang mengatakan:

PL/SQL procedure successfully completed

Karena pernyataan NULL tidak melakukan apapun.

Untuk menampilkan output database di layar, kamu perlu untuk:

    Pertama, gunakan perintah SET SERVEROUTPUT ON untuk menginstruksikan SQL * Plus untuk menampilkan output database setelah menjalankan blok PL / SQL. SET SERVEROUTPUT ON adalah perintah SQL * Plus, yang tidak berhubungan dengan PL / SQL.

    Kedua, gunakan prosedur DBMS_OUTPUT.PUT_LINE untuk menampilkan string di layar.

Contoh berikut menampilkan pesan Hello PL / SQL di layar menggunakan SQL * Plus:

SET SERVEROUTPUT ON SIZE 1000000
BEGIN
   DBMS_OUTPUT.PUT_LINE('Hello PL/SQL');
END;
/

Dalam contoh ini, kamu cukup menggunakan bagian eksekusi untuk mengeksekusi kode. kamu akan belajar bagaimana mendeklarasikan variabel dan menangani pengecualian dalam tutorial berikutnya.

Berlatih pada struktur blok anonim

Sekarang, giliran kamu untuk membuat blok PL / SQL dan menjalankannya di SQL * Plus yang menampilkan pesan ucapan "Hello Word" di layar.

Pertama, Anda perlu login ke database Oracle melalui SQL * Plus dengan memberikan username dan password seperti gambar berikut.

SQL * Plus Login

Struktur Blok PL / SQL
Gambar 1. SQL * Plus Login


Kedua, ketik kode berikut ke dalam SQL * Plus dan jalankan seperti gambar berikut ini:

PL / SQL Hello Word

Struktur Blok PL / SQL
Gambar 2.PL/SQL Hello World

Selamat, kamu telah menyelesaikan program PL / SQL yang pertama!

Dalam tutorial ini, kamu telah belajar bagaimana PL / SQL mengatur kode menggunakan struktur blok, dan bagaimana membuat PL / SQL pertama dan menjalankannya dengan menggunakan SQL * PLUS.


Sumber Referensi gambar dan artikel asli : http://www.plsqltutorial.com

Monday, October 9, 2017

Penrgertian Variabel PL / SQL

Dalam PL / SQL, sebuah variabel adalah nama yang berarti dari lokasi penyimpanan sementara yang mendukung tipe data tertentu dalam suatu program. Sebelum menggunakan variabel, Kamu harus mendeklarasikannya terlebih dulu di bagian deklarasi blok PL / SQL.

Aturan penamaan variabel PL / SQL


Seperti bahasa pemrograman lainnya, variabel dalam PL / SQL harus mengikuti aturan penamaan sebagai berikut:

  1. Nama variabel harus kurang dari 31 karakter. Cobalah untuk membuatnya seirama mungkin dalam 31 karakter.
  2. Nama variabel harus dimulai dengan huruf ASCII. Bisa berupa huruf kecil atau huruf besar. Perhatikan bahwa PL / SQL tidak bersifat case-insensitive, yang berarti v_data dan V_DATA mengacu pada variabel yang sama.
  3. Diikuti oleh karakter pertama ada beberapa angka, garis bawah (_), dan tanda dollar ($) karakter. 
Sekali lagi, jangan membuat variabel Anda susah dibaca dan sulit dimengerti.

PL / SQL variabel penamaan konvensi


Sangat disarankan agar Anda mengikuti konvensi penamaan yang tercantum dalam tabel berikut untuk membuat variabel terlihat jelas dalam program PL / SQL:

Prefix                    DataType
 v_                        VARCHAR2
 n_                        NUMBER
 t_                         TABEL
 r_                         ROW
 d_                        DATE
 b_                        BOOLEAN

Setiap organisasi memiliki pedoman penamaan konvensi penamaannya sendiri. Pastikan kamu mematuhi pedoman konvensi penamaan organisasinya.

Misalnya, jika kamu ingin mendeklarasikan variabel yang memegang nama depan karyawan dengan tipe data VARCHAR2, nama variabel harus v_first_name.

Deklarasi Variabel PL / SQL


Untuk mendeklarasikan sebuah variabel, kamu bisa menggunakan nama variabel diikuti oleh tipe data dan diakhiri dengan titik koma (;). kamu juga dapat secara eksplisit menambahkan batasan panjang ke tipe data dalam tanda kurung.

Contoh berikut ini adalah ilustrasi mendeklarasikan beberapa variabel dalam blok anonim PL / SQL:

DECLARE
   v_first_name varchar2(20);
   v_last_name varchar2(20);
   n_employee_id number;
   d_hire_date date;
BEGIN
   NULL;
END;

PL/SQL variable anchors


Dalam program PL / SQL, salah satu tugas yang paling umum adalah memilih nilai dari kolom dalam tabel menjadi satu set variabel. Jika tipe data kolom dari tabel berubah, kamu harus mengubah program PL / SQL untuk membuat jenis variabel yang kompatibel dengan perubahan baru.

PL / SQL terdapat fitur yang sangat berguna yang disebut variable anchors. Ini mengacu pada penggunaan kata kunci% TYPE untuk mendeklarasikan variabel dengan tipe data dikaitkan dengan tipe data kolom dari kolom tertentu dalam sebuah tabel.

Mari kita lihat tabel karyawan di database sampel SDM yang disediakan oleh Oracle:

Tabel Karyawan - Variabel PL / SQL



DECLARE
  v_first_name  EMPLOYEES.FIRST_NAME%TYPE;
  v_last_name   EMPLOYEES.LAST_NAME%TYPE;
  n_employee_id EMPLOYEES.EMPLOYEE_ID%TYPE;
  d_hire_date   EMPLOYEES.HIRE_DATE%TYPE;
BEGIN
  NULL;
END;
/

Variabel v_first_name memiliki tipe data yang sama dengan tipe data kolom first_name pada tabel emloyees. Jika tipe data perubahan kolom first_name, jenis variabel v_first_name secara otomatis mewarisi tipe data kolom yang baru.

Penugasan variabel PL / SQL


Dalam PL / SQL, untuk menetapkan nilai atau variabel ke variabel, bisa menggunakan operator penugasan (: =) yang merupakan titik dua (:) diikuti oleh tanda sama dengan (=).

Silakan lihat daftar kode di bawah ini untuk mendapatkan pemahaman yang lebih baik:


DECLARE
   v_first_name EMPLOYEES.FIRST_NAME%TYPE;
   v_last_name EMPLOYEES.LAST_NAME%TYPE;
   n_employee_id EMPLOYEES.EMPLOYEE_ID%TYPE;
   d_hire_date EMPLOYEES.HIRE_DATE%TYPE;
BEGIN
   v_first_name := 'Mary';
   v_last_name := 'Jane';
   d_hire_date := to_date('19700101','YYYYMMDD');
END;
/


Pada contoh di atas, saya menugaskan variabel Mary ke v_first_name, variabel Jane ke v_last_name, dan hasil dari fungsi to_date menjadi variabel d_hire_date.

kamu juga dapat menggunakan INTO dari statemen SELECT SQL untuk menetapkan sebuah nilai ke sebuah variabel. Klausa INTO memindahkan nilai dari daftar kolom SELECT query ke variabel PL / SQL yang sesuai.

SET SERVEROUTPUT ON SIZE 1000000;
DECLARE
   v_first_name EMPLOYEES.FIRST_NAME%TYPE;
   v_last_name EMPLOYEES.LAST_NAME%TYPE;
   n_employee_id EMPLOYEES.EMPLOYEE_ID%TYPE;
   d_hire_date EMPLOYEES.HIRE_DATE%TYPE;
BEGIN
   SELECT employee_id,
          first_name,
          last_name,
          hire_date
   INTO n_employee_id,
        v_first_name,
        v_last_name,
        d_hire_date
   FROM employees
   WHERE employee_id = 200;

   DBMS_OUTPUT.PUT_LINE(v_first_name);
   DBMS_OUTPUT.PUT_LINE(v_last_name);
   DBMS_OUTPUT.PUT_LINE(d_hire_date);
END;
/

Menginisialisasi variabel


Ketika kamu mendeklarasikan sebuah variabel, nilainya tidak diinisiasi dan karenanya adalah NULL. Kamu dapat menginisialisasi variabel sebuah nilai pada bagian deklarasi dengan menggunakan variabel assignment.

Lihat contoh berikut ini:

DECLARE
  n_employee_id EMPLOYEES.EMPLOYEE_ID%TYPE :=200;
  d_hire_date EMPLOYEES.HIRE_DATE%TYPE:=to_date('19700101','YYYYMMDD');
BEGIN
   NULL;
END;
/


Dalam PL / SQL, NULL berarti nilai yang tidak diketahui sehingga memiliki beberapa karakteristik khusus sebagai berikut:

    NULL tidak sama dengan apapun, bahkan NULL sendiri.
    NULL tidak lebih dari atau kurang dari apapun, bahkan NULL.
    Anda tidak dapat menggunakan operator logika sama (=) atau (<>) dengan NULL. Anda harus menggunakan SQL IS NULL atau TIDAK NULL untuk menguji nilai NULL.

Dalam tutorial ini, kami telah menunjukkan kepada Anda bagaimana cara mendeklarasikan, menetapkan dan menginisialisasi variabel PL / SQL. Kami juga mengantarmu bagaimana cara mendeklarasikan variabel PL / SQL menggunakan anchor variabel untuk membuat kodemu lebih fleksibel dan mudah beradaptasi dengan perubahan kolom tabel database.

sumber gambar dan Referensi artikel asli  : http://www.plsqltutorial.com/

Pengertian PL / SQL

PL / SQL singkatan dari Bahasa Prosedural untuk Structured Query Language (SQL). Kalau kamu pernah memprogram pakai bahasa Pascal atau Ada, Kamu akan nemuin banyak sintaks yang familiar di PL / SQL.

SQL adalah bahasa yang cukup kuat untuk query dan updating data dalam database relasional.


Oracle membuat PL / SQL yang memperluas beberapa keterbatasan SQL untuk memberikan solusi yang lebih komprehensif untuk membangun aplikasi mission-critical yang berjalan di database Oracle.

Mengenal lebih jauh tentang bahasa PL / SQL


Sebelum memulai, disarankan untuk menyiapkan database Oracle yang sudah di install sistem operasimu untuk membantumu berlatih dan belajar PL / SQL lebih efektif.

Sulit untuk menulis aplikasi menggunakan SQL hanya karena setiap pernyataan SQL berjalan secara independen dan memiliki sedikit atau tidak ada efek satu sama lain. Untuk mengatasi keterbatasan ini, Anda sering harus menggunakan bahasa pemrograman lain seperti C / C ++, Perl, PHP, Java, dll, dengan menggunakan database interface standar. Oracle mendukung pendekatan ini ketika Anda ingin mengembangkan aplikasi yang berinteraksi dengan database Oracle.

Selain itu, Oracle juga mendorong Anda untuk menggunakan PL / SQL untuk bekerja dengan database Oracle karena PL / SQL membawa banyak keuntungan.

Sejarah PL / SQL


Oracle memperkenalkan PL / SQL (versi 1.0) pada produk Oracle Database versi 6.0 sebagai bahasa scripting di SQL * Plus dan bahasa pemrograman di SQL * Forms 3.

Sejak versi 7, Oracle melakukan upgrade besar untuk PL / SQL (versi 2.0) yang menyediakan lebih banyak fitur seperti procedures, functions, packages, records, collections,
dan beberapa ekstensi paket.

Sejak saat itu banyak fitur telah ditambahkan ke PL / SQL seperti dukungan XML, preprocessor, file I / O, orientasi objek, pernyataan baru seperti CONTINUE, GOTO, dll untuk membuatnya menjadi salah satu bahasa pemrograman yang paling terstruktur.

Keuntungan menggunakan PL / SQL


PL / SQL adalah bahasa yang sangat terstruktur


PL / SQL menyediakan sintaks yang sangat ekspresif yang memudahkan bagi siapa saja yang ingin belajar PL / SQL. kalo kamu sudah terbiasa dengan pemrograman dengan bahasa lain, kamu bisa saja mengerti bahasa PL / SQL dengan sangat  cepat dan memahami maksud dari kode tanpa kesulitan.

Fitur bahasa PL / SQL mencakup elemen berikut:

  •     Variables
  •     Block structure, nested block structure
  •     Conditional and sequential statements: IF, CASE, GOTO, CONTINUE and NULL
  •     Loop statements: WHILE loop, FOR loop
  •     Exception and error handling
  •     Data types: string, numbers, date & timestamp, Boolean and LOB
  •     Record
  •     Collection
  •     Cursor
  •     Procedures, functions, packages
  •     Object-orientation features
  •     Dynamic SQL and dynamic PL/SQL

PL / SQL adalah bahasa portabel dan standar untuk pengembangan Oracle


Setelah kamu mengembangkan program PL / SQL di Database Oracle, kamu juga dapat memindahkannya ke Database Oracle lainnya tanpa perubahan, dengan asumsi bahwa versi database Oracle kompatibel.

PL / SQL adalah bahasa yang disematkan


Program PL / SQL seperti fungsi dan prosedur disimpan dalam database Oracle dalam bentuk terkompilasi. Hal ini memungkinkan aplikasi atau pengguna untuk berbagi fungsionalitas yang sama yang tersimpan dalam database Oracle.

PL / SQL juga memungkinkan kamu untuk menentukan pemicu yang dapat dipanggil secara otomatis untuk menanggapi kejadian tertentu pada tabel terkait.
PL / SQL adalah bahasa berkinerja tinggi di dalam Oracle Database

Oracle menambahkan banyak perangkat tambahan ke PL / SQL agar lebih efisien untuk berinteraksi dengan database Oracle.


Referensi artikel asli: http://www.plsqltutorial.com/

Popular Posts