Situs informasi aplokasi, Tips dan trik, Berita, informasi Teknologi, perkembangan Gadget dan internet.
Showing posts with label PL/SQL. Show all posts
Showing posts with label PL/SQL. Show all posts

Thursday, November 14, 2019

Tips Dan Trik Sintak Dasar Pl/Sql

Sintak Dasar

 Bagian deklarasi biasanya dipakai untuk mendefinisikan semua  Tips Dan Trik Sintak Dasar PL/SQL
Gambar Blok PL/SQL

Secara umum, sintak dasar PL/SQL terdiri atas 3 bab atau blok dasar yaitu:
  1. Bagian Deklarasi (Declaration Section)

    Bagian ini diawali dengan keyword DECLARE. Bagian deklarasi biasanya dipakai untuk mendefinisikan semua variable, cursor, ataupun subprogram. Bagian ini bersifat opsional (tidak harus ada dalam program).

  2. Bagian Eksekusi (Execution Section)

    Bagian ini diawali dengan keyword BEGIN dan diakhiri dengan keyword END. Pada bab inilah kita akan menuliskan aktivitas PL/SQL. Bagian Ekekusi ini WAJIB ada (mandatory).

  3. Bagian Penanganan Error (Exception Handling Section)

    Bagian ini diawali dengan keyword EXCEPTION dan dipakai untuk menangani error sewaktu aktivitas PL/SQL dijalankan. Bagian ini juga bersifat opsional (tidak harus ada) Agar lebih jelasnya, Anda sanggup melihat sintak dasar PL/SQL di bawah ini.

    DECLARE <bagian deklarasi> BEGIN <bagian ekskusi> EXCEPTION <bagian penanganan error> END;  
Catatan:
Setiap statement di PL/SQL harus di akhiri dengan tanda ";" (semicolon).

Contoh Program

Sebagai latihan awal, Kita akan menciptakan aktivitas untuk menampilkan goresan pena "Biodata" pada layar komputer. Langkah-langkahnya yaitu sebagai berikut.

1. Login di SQL Plus
Anda sanggup login ke SQL Plus dengan cara buka Command Prompt (CMD), lalu ketikkan sqlplus pada jendela Command prompt.

   C:\Users\Dev>sqlplus     SQL*Plus: Release 11.2.0.1.0 Production on Sel Mar 17 23:04:12 2015     Copyright (c) 1982, 2010, Oracle.  All rights reserved.     Enter user-name: nano    Enter password:     Connected to:    Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit  Production    With the Partitioning, OLAP, Data Mining and Real Application Testing options 

2.Ketikkan Program
Coba Anda ketikkan aktivitas PL/SQL di bawah ini:

   DECLARE       vNama VARCHAR2(30) := 'Nursalim';       vAlamat VARCHAR2(30) := 'Brebes';       vJenisKelamin VARCHAR2(30) := 'Laki-Laki';    BEGIN       DBMS_OUTPUT.PUT_LINE('Nama : '||vNama);       DBMS_OUTPUT.PUT_LINE('Alamat : '||vAlamat);       DBMS_OUTPUT.PUT_LINE('Jenis Kelamin : '||vJenisKelamin);    END;        / 

Keterangan:
DBMS_OUTPUT.PUT_LINE ada perintah untuk menampilkan goresan pena di layar console.
  1. Jalankan Progam

    Coba Anda jalankan aktivitas diatas, maka akan menampilkan goresan pena ibarat di bawah ini.

    Nama : Nursalim Alamat : Brebes Jenis Kelamin : Laki-Laki PL/SQL procedure successfully completed.  

Pengenal (Identifier)

Identifier yaitu nama yang dipakai untuk variabel, konstanta, fungsi, prosedur, cursor, dan lain sebagainya.

Aturan penamaan identifier di PL/SQL adalah:
1. Identifier dihentikan melebihi 30 karakter.
2. Identifier diawali dengan abjad dan selanjutnya diikuti dengan huruf, angka, underscore, dan tanda dollar ($).
3. Identifier bersifat TIDAK case sensitive. Artinya kata 'bagus' sama dengan kata 'BAGUS', 'Bagus', dan lain sebagainya.
4. Tidak boleh memakai Reserved Word sebagai identifier.
5. Contoh identifier yang valid yaitu totalGaji, totalGaji_, totalGaji$.

Komentar

Kita sanggup memakai komentar pada aktivitas PL/SQL yang biasanya dipakai sebagai dokumentasi program. Komentar tidak akan dihukum oleh program.

Ada 2 Jenis komentar di PL/SQL, yaitu:

1. Single Line Comment
Adalah komentar yang dipakai dalam 1 baris. Komentar ini di awali dengan tanda "--".
Contoh:

BEGIN   -- aktivitas untuk menghitung jumlah bilangan   DBMS_OUTPUT.PUT_LINE(" 1 + 2 = "||1+2); END; 

2.Multiple Line Comment 

Adalah komentar yang dipakai lebih dari 1 baris. Komentar ini diawali dengan tanda "/*" dan ditutup dengan tanda "*/"
Contoh:

BEGIN   /* - aktivitas untuk menghitung hasil jumlah bilangan      - dan untuk menghitung hasil pengurangan   */    DBMS_OUTPUT.PUT_LINE(" 1 + 2 = "||1+2);    DBMS_OUTPUT.PUT_LINE(" 3 - 2 = "||3-2); END;

Tips Dan Trik Tipe Data Pada Pl/Sql

Macam-Macam Tipe Data

SQL memiliki beberapa tipe data yang umum digunakan yaitu Tips Dan Trik Tipe Data Pada PL/SQL
Gambar diambil dari docs.oracle.com

PL/SQL memiliki beberapa tipe data yang umum digunakan yaitu:

1. Tipe Data Numerik

Tipe Data Numerik digunakan untuk menyimpan data numerik (bilangan) dan melaksanakan operasi aritmetika ibarat penjumlahan, pembagian, pengurangan, dan lain sebagainya. Tipe data Numerik terdiri atas beberapa sub tipe data, yaitu:

Tipe Data Deskripsi
PLS_INTEGER Untuk bilangan lingkaran 32-bit.
BINARY_INTEGER Untuk bilangan lingkaran 32-bit.
BINARY_FLOAT Untuk bilangan pecahan.
BINARY_DOUBLE Untuk bilangan pecahan.
NUMBER(precision, scale) Untuk bilangan pecahan dengan presisi dan skala tertentu.
NUMERIC Untuk bilangan pecahan
DECIMAL(precision, scale) Untuk bilangan pecahan
FLOAT Untuk bilangan pecahan
INT Untuk bilangan bulat
INTEGER Untuk bilangan bulat
SMALLINT Untuk bilangan bulat
REAL

Contoh Program

2. Tipe Data Karakter

Tipe data abjad digunakan untuk menyimpan data yang berupa abjad atau String. Tipe data abjad terdiri atas beberapa sub tipe data, yaitu:

Tipe Data Deskripsi
CHAR Digunakan untuk data abjad yang panjangnya tetap (fixed).
VARCHAR2 Digunakan untuk data abjad yang panjangnya fleksibel (variable)
RAW Digunakan untuk data binary/byte yang panjangnya fleksibel (variable)
NCHAR Digunakan untuk data abjad yang panjangnya tetap (fixed).
NVARCHAR2 Digunakan untuk data abjad yang panjangnya fleksibel (variable)
LONGRAW
ROWID
UROWID

Contoh Program

3. Tipe Data Boolean


Tipe data yang digunakan untuk menyatakan kondisi logika yaitu TRUE atau FALSE.

Contoh Program

4. Tipe Data Tanggal & Waktu


Digunakan untuk menyimpan data tanggal dan waktu. Terdiri atas beberapa sub tipe data, yaitu:

Tipe Data Deskripsi
Date

Contoh Program

5. Tipe Data LOB (Large Object)


Tipe Data ini digunakan untuk menyimpan data yang berukuran besar ibarat image, video, suara, dan lain sebagainya. Tipe data LOB terdiri atas beberapa sub tipe data yaitu:

Tipe Data Deskripsi
BFILE Digunakan untuk menyimpan data binary di dalam OS (operating system) diluar database. Ukuran maksimum ialah 4GB (Giga Bytes).
BLOB Digunakan untuk menyimpan data binary dengan rentang ukuran antara 8 GB (Giga bytes) hingga dengan 128 TB (Tera Bytes).
CLOB Digunakan untuk menyimpan data character dengan rentang ukuran antara 8 GB (Giga bytes) hingga dengan 128 TB (Tera Bytes).
NCLOB Digunakan untuk menyimpan data national character dengan rentang ukuran antara 8 GB (Giga bytes) hingga dengan 128 TB (Tera Bytes).

Contoh Program

6. Tipe Data User Defined


Kita sanggup menciptakan tipe data sendiri (user defined subtypes) dengan cara menurunkannya dari tipe data yang sudah ada di PL/SQL.

Oracle PL/SQL memiliki beberapa tipe data turunan STANDARD ibarat CHARACTER dan INTEGER.
  • tipe data CHARACTER ialah turunan dari tipe data CHAR
  • tipe data INTEGER ialah turunan dari tipe data NUMBER(38,0)

Contoh Program

DECLARE   SUBTYPE jurusan IS VARCHAR2(50);   SUBTYPE gender IS CHAR(30);   tekom jurusan;   l gender; BEGIN   tekom := 'Teknik Komputer';   l := 'Laki-Laki';      DBMS_OUTPUT.PUT_LINE(tekom);   DBMS_OUTPUT.PUT_LINE(l); END; / 

Apabila jadwal diatas dijalankan, maka akan keluar output ibarat di bawah ini.

Teknik Komputer Laki-Laki PL/SQL procedure successfully completed.  

7. Tipe Data NULL


Tipe data NULL ialah tipe data yang tidak dikenal (unknown data type). Tipe data NULL tidak sama dengan 0 ataupun abjad kosong.

Catatan:

Anda harus hati-hati dikala memakai tipe data NULL untuk melaksanakan operasi matematika ibarat penjumlahan, pengurangan, dan lain sebagainya alasannya ialah setiap operasi yang di sanksi akan menghasilkan nilai NULL juga.

Sebagai ilustrasi, anda sanggup melihat tabel di bawah ini:

Contoh Hasil
1 + NULL NULL
100000 * NULL NULL
100 / NULL NULL

Tips Dan Trik Variabel Pada Pl/Sql

Apa itu Variabel


Variabel yaitu salah satu lokasi di memori yang dipakai untuk menyimpan jadwal sehingga sanggup dimanipulasi nilainya.

Setiap variabel di PL/SQL harus memiliki tipe data. Kita harus menunjukkan tipe data yang sesuai pada variabel yang akan kita buat.

Deklarasi Variabel


Setiap variabel yang akan dipakai dalam jadwal PL/SQL harus terlebih dahulu di deklarasikan. Pertanyaannya, bagaimana cara mendeklarasikan variabel di PL/SQL?

Di bawah ini yaitu sintak dasar deklarasi variabel di PL/SQL:

nama_variabel [CONSTANT] tipe_data [NOT NULL] [:= | DEFAULT nilai_awal]  
Penjelasan sintak:

  • nama_variabel yaitu nama variabel yang akan digunakan
  • [KONSTANTA] yaitu kata kunci (keyword) apabila kita mendeklarasikan variabel sebagai konstanta.
  • tipe_data yaitu tipe data yang akan dipakai pada variabel.
  • := yaitu assigment operator
  • DEFAULT nilai_awal yaitu nilai awal (initial value) yang akan diberikan pada variabel

Inisialisasi Variabel


Sebelum variabel digunakan, Anda harus menginisialisasi terlebih dahulu. Inisialisasi yaitu proses proteksi nilai pada suatu variabel.

Anda sanggup memakai 2 cara dalam menunjukkan nilai variabel pada PL/SQL, yaitu:

  1. Menggunakan assigment operator ( := )
  2. Menggunakan keyword DEFAULT

Sebagai contoh

vNama VARCHAR2(50) := 'Otong'; vJurusan VARCHAR2(50) DEFAULT 'Teknik Informatika'; 

Contoh Program


Di bawah ini yaitu teladan penggunaan variabel pada jadwal PL/SQL:

DECLARE   vNama VARCHAR2(50);   vGender VARCHAR2(50);   vAlamat VARCHAR2(50);   vJurusan VARCHAR2(50) NOT NULL DEFAULT 'Teknik Informatika';   vIPK NUMBER(3,2); BEGIN   DBMS_OUTPUT.PUT_LINE('**********************************************');   DBMS_OUTPUT.PUT_LINE('Program menampilkan data mahasiswa informatika');   DBMS_OUTPUT.PUT_LINE('**********************************************');      vNama := 'Nursalim';   vGender := 'Laki Laki';   vAlamat := 'Jakarta';   vIPK := 3.75;      DBMS_OUTPUT.PUT_LINE('Nama : '||vNama);   DBMS_OUTPUT.PUT_LINE('Jenis Kelamin : '||vGender);   DBMS_OUTPUT.PUT_LINE('Alamat : '||vAlamat);   DBMS_OUTPUT.PUT_LINE('Jurusan : '||vJurusan);   DBMS_OUTPUT.PUT_LINE('IPK : '||vIpk); END;  
Output

Coba Anda jalankan jadwal PL/SQL diatas, maka akan menampilkan output menyerupai di bawah ini:

********************************************** Program menampilkan data mahasiswa informatika ********************************************** Nama : Nursalim Jenis Kelamin : Laki Laki Alamat : Jakarta Jurusan : Teknik Informatika IPK : 3,75  PL/SQL procedure successfully completed. 

Variabel Scope


Ada 2 macam tipe variabel pada jadwal PL/SQL, yaitu:
  • Global Variabel
    Global Variabel yaitu variabel yang sanggup diakses oleh seluruh blok di dalam PLSQL.

  • Local Variabel
    LOcal Variabel yaitu variabel yang sanggup diakses HANYA oleh blok itu sendiri.
Agar lebih jelas, Anda sanggup melihat teladan jadwal di bawah ini:

DECLARE   -- Global Variabel      vNama VARCHAR2(50);   vGender VARCHAR2(50);   vAlamat VARCHAR2(50);   vJurusan VARCHAR2(50) NOT NULL DEFAULT 'Teknik Informatika';   vIPK NUMBER(3,2); BEGIN      vNama := 'Nursalim';   vGender := 'Laki Laki';   vAlamat := 'Jakarta';   vIPK := 3.75;      DBMS_OUTPUT.PUT_LINE('Nama : '||vNama);   DBMS_OUTPUT.PUT_LINE('Jenis Kelamin : '||vGender);   DBMS_OUTPUT.PUT_LINE('Alamat : '||vAlamat);   DBMS_OUTPUT.PUT_LINE('Jurusan : '||vJurusan);   DBMS_OUTPUT.PUT_LINE('IPK : '||vIpk);      DECLARE     -- Local variabel          vMatakuliah VARCHAR2(50);     vNilai VARCHAR2(3);   BEGIN     vMatakuliah := 'Teknik Kompilasi';     vNilai := 'A';          DBMS_OUTPUT.PUT_LINE('Mata Kuliah : '||vMatakuliah);     DBMS_OUTPUT.PUT_LINE('Nilai : '||vNilai);   END;    END;  
Output

Nama : Nursalim Jenis Kelamin : Laki Laki Alamat : Jakarta Jurusan : Teknik Informatika IPK : 3,75 Mata Kuliah : Teknik Kompilasi Nilai : A  PL/SQL procedure successfully completed. 

Variabel Dan Query

Anda sanggup menyimpan hasil sebuah query SQL kedalam variabel yang telah ditentutkan.

Sebagai contoh, Anda sanggup ikuti langkah-langkah di bawah ini.

1. Membuat Tabel

CREATE TABLE MAHASISWA (   NPM      VARCHAR2(10 BYTE),   NAMA     VARCHAR2(50 BYTE),   JURUSAN  VARCHAR2(50 BYTE) );  Table Created. 

2. Insert Data

Insert into NANO.MAHASISWA    (NPM, NAMA, JURUSAN)  Values    ('2015001', 'Nursalim', 'Teknik Informatika'); Insert into NANO.MAHASISWA    (NPM, NAMA, JURUSAN)  Values    ('2015002', 'Nani Indriyani', 'Bahasa Inggris'); Insert into NANO.MAHASISWA    (NPM, NAMA, JURUSAN)  Values    ('2015003', 'Desi Lisnawati', 'Biologi'); COMMIT;  
3. Program PL/SQL

DECLARE      vNPM mahasiswa.npm%type := '2015001';   vNama mahasiswa.nama%type;   vJurusan mahasiswa.jurusan%type;    BEGIN      SELECT nama, jurusan   INTO vNama, vJurusan   FROM mahasiswa   WHERE npm = vNPM;      DBMS_OUTPUT.PUT_LINE('Nama : '||vNama);   DBMS_OUTPUT.PUT_LINE('Jurusan : '||vJurusan);        END;  

4. Output

Nama : Nursalim Jurusan : Teknik Informatika  PL/SQL procedure successfully completed. 


Selesai :)

Tips Dan Trik Konstanta Dan Literal Pada Pl/Sql

Apa Itu Konstanta?

Konstanta ialah suatu variabel yang nilainya bersifat tetap dan tidak sanggup diubah. Menurut standar penulisan, sebuah konstanta ditulis dalam aksara kapital.

Deklarasi Konstanta

Dibawah ialah teladan deklarasi konstanta pada jadwal PL/SQL:

nama_variabel CONSTANT tipe_data := nilai; 

Contoh Program

Dibawah ini ialah jadwal PL/SQL untuk menghitung luas dan keliling bulat yang memakai konstanta PI (3,14).

DECLARE      -- constant declaration     pi constant number := 3.141592654;          -- other declarations     jari2 number(5,2);     diameter number(5,2);     keliling number(7, 2);     luas number (10, 2); BEGIN     DBMS_OUTPUT.PUT_LINE('*********************************************');     DBMS_OUTPUT.PUT_LINE('Program Menghitung Luas Dan Keliling Segitiga');     DBMS_OUTPUT.PUT_LINE('*********************************************');          jari2 := 9.5;     diameter := jari2 * 2;     keliling := 2.0 * PI * jari2;     luas := PI * jari2 * jari2;     -- output      dbms_output.put_line('Jari Jari: ' || jari2);     dbms_output.put_line('Diameter: ' || diameter);     dbms_output.put_line('keliling: ' || keliling);     dbms_output.put_line('Luas: ' || luas); END; / 

Output

********************************************* Program Menghitung Luas Dan Keliling Segitiga ********************************************* Jari Jari: 9,5 Diameter: 19 keliling: 59,69 Luas: 283,53  PL/SQL procedure successfully completed. 

Literal

Ada beberapa jenis literal pada PL/SQL, yaitu:

  • String Literal
    Contoh : 'Hello World' '10293' '2014-10-10'

  • Character Literal
    Contoh : 'A' '%' '('

  • Numeric Literal
    Contoh : 1 -14 +7755 6E5

  • Boolean Literal
    Contoh : TRUE, FALSE

  • Date & Time Literal
    Contoh : DATE '2014-12-12'; TIMESTAMP'2014-12-12 12:01:01';

Contoh Program

Di bawah ini ialah teladan implementasi literal dalam jadwal PL/SQL:

DECLARE     pesan varchar2(100):= 'That''s greatest PLSQL Tutorials!';     tanggal DATE := DATE'2015-02-02'; BEGIN     dbms_output.put_line('Pesan : '||pesan);     dbms_output.put_line('Tanggal '||tanggal); END; / 

Output

Pesan : That's greatest PLSQL Tutorials! Status 02-02-2015  PL/SQL procedure successfully completed. 


Tips Dan Trik Operator Pada Pl/Sql

Apa Itu Operator?

Operator yaitu simbol yang dipakai untuk menyatakan compiler untuk melaksanakan operasi yang dinginkan ibarat operasi aritmetika, logika, dan lain sebagainya.

Jenis Jenis Operator

PL/SQL mempunyai beberapa jenis yaitu:

  • Operator Aritmetika (Arithmetic Operator)
  • Operator Relasi (Relational Operator)
  • Operator Perbanding (Comparison Operator)
  • Operator Logika (Logical Operator)
  • Operator String (String Operator)

Operator Aritmetika

Dibawah ini yaitu tabel macam-macam operator aritmetika:

Operator Deskripsi Contoh
+ Menjumlahkan operand A dengan operand B A + B
-  Mengurangkan operand A dengan operand B A - B
/ Membagi operand A dengan operand B A / B
* Mengalikan operand A dengan operand B A * B
** operand A dipangkat dengan operand B A ** B

Contoh Program

BEGIN     dbms_output.put_line('10 + 5 = '|| (10 + 5));     dbms_output.put_line('10 - 5 = '|| (10 - 5));     dbms_output.put_line('10 * 5 = '|| (10 * 5));     dbms_output.put_line('10 / 5 = '|| (10 / 5));     dbms_output.put_line('10 ** 5 = '|| (10 ** 5)); END; /  
Output

10 + 5 = 15 10 - 5 = 5 10 * 5 = 50 10 / 5 = 2 10 ** 5 = 100000  PL/SQL procedure successfully completed. 

Operator Relasi

Dibawah ini yaitu tabel macam-macam operator korelasi di PL/SQL:

Operator Deskripsi Contoh
= Apakah operand A sama dengan operand B A = B
!= atau <> atau = Apakah operand A tidak dengan operand B A != B
> Apakah operand A lebih besar operand B A - B
>= Apakah operand A lebih besar atau sama dengan operand B A >= B
< Apakah operand A lebih kecil dari operand B A < B
<= Apakah operand A lebih kecil atau sama dengan operand B A <= B

Contoh Program

DECLARE     a number := 10;     b number := 5; BEGIN     dbms_output.put_line('a = '||a);     dbms_output.put_line('b = '||b);     if(a = b) then         dbms_output.put_line('Bilangan a sama dengan bilangan b');         else         dbms_output.put_line('Bilangan a tidak sama dengan bilangan b');     end if;          if(a != b) then         dbms_output.put_line('Bilangan a tidak sama dengan bilangan b');     else         dbms_output.put_line('Bilangan a sama dengan bilangan b');         end if;          if(a > b) then         dbms_output.put_line('Bilangan a lebih besar bilangan b');     else         dbms_output.put_line('Bilangan a lebih kecil bilangan b');         end if;          if(a >= b) then         dbms_output.put_line('Bilangan a lebih besar atau sama dengan bilangan b');     else         dbms_output.put_line('Bilangan a tidak lebih besar atau sama dengan bilangan b');         end if;          if(a < b) then         dbms_output.put_line('Bilangan a lebih kecil bilangan b');     else         dbms_output.put_line('Bilangan a lebih besar bilangan b');         end if;          if(a <= b) then         dbms_output.put_line('Bilangan a lebih kecil sama dengan bilangan b');     else         dbms_output.put_line('Bilangan a tidak lebih kecil sama dengan bilangan b');         end if;      END; / 

Output

a = 10 b = 5 Bilangan a tidak sama dengan bilangan b Bilangan a tidak sama dengan bilangan b Bilangan a lebih besar bilangan b Bilangan a lebih besar atau sama dengan bilangan b Bilangan a lebih besar bilangan b Bilangan a tidak lebih kecil sama dengan bilangan b  PL/SQL procedure successfully completed. 

Operator Perbandingan

Operator perbandingan atau comparison operator dipakai untuk membanding sebuah ekpresi dengan lisan lainnya. Ada beberapa jenis operator perbandingan dalam PL/SQL, yaitu:


  • LIKE

    Operator LIKE akan membandingkan karakter, string, ataupun CLOB dengan pattern atau contoh yang telah ditentukan. Apabila sesuai, maka akan bernilai TRUE, sedangkan kalau tidak sesuai akan bernilai FALSE.

    Contoh Program

    DECLARE    vNama1 VARCHAR2(20) := 'NURSALIM';    vNama2 VARCHAR2(20) := 'NAURA';    pattern VARCHAR2(20) := '%NUR%'; BEGIN    IF vNama1 LIKE pattern THEN       DBMS_OUTPUT.PUT_LINE('vNama1 bernilai TRUE');    ELSE       DBMS_OUTPUT.PUT_LINE('vNama1 bernilai FALSE');    END IF;     IF vNama2 LIKE pattern THEN       DBMS_OUTPUT.PUT_LINE('vNama2 bernilai TRUE');    ELSE       DBMS_OUTPUT.PUT_LINE('vNama2 bernilai FALSE');    END IF; END; /  
  • BETWEEN

    Operator Between dipakai untuk mengecek apakah sebuah nilai berada dalam sebuah rentang yang telah ditentukan. Apabila sesuai maka akan menghasilkan nilai TRUE. Sebaliknya kalau tidak sesuai akan menghasilkan nilai FALSE.

    Contoh Program

    DECLARE    vBilangan NUMBER := 10; BEGIN    IF vBilangan BETWEEN 1 AND 30 THEN       DBMS_OUTPUT.PUT_LINE('Bilangan 10 berada dalam rentang 1 hingga 30');    ELSE       DBMS_OUTPUT.PUT_LINE('Bilangan 10 tidak berada dalam rentang 1 hingga 30');    END IF; END; /  
  • IN

    Operator IN dipakai untuk mengecek apakan sebuah nilai merupakan bab dari himpunan (membership) yang telah ditentukan. Apabila merupakan bagian, maka akan bernilai TRUE. Sedangkan kalau diluar bagian, maka akan bernilai FALSE.

    Contoh Program

    DECLARE   vKarakter CHAR(1) := 'M'; BEGIN   IF vKarakter IN ('A','C','D') THEN      DBMS_OUTPUT.PUT_LINE('Bernilai TRUE');   ELSE      DBMS_OUTPUT.PUT_LINE('Bernilai FALSE');   END IF; END; /  
  • IS NULL

    Operator IS NULL akan mengecek apakah sebuah nilai bernilai NULL atau tidak?. Jika bernilai NULL, maka akan menghasilkan nilai TRUE, dan sebaliknya jikalau tidak NULL akan bernilai FALSE.

    Contoh Program

    DECLARE   vKarakter CHAR(1) := 'M'; BEGIN   IF vKarakter IS NULL THEN      DBMS_OUTPUT.PUT_LINE('Bernilai TRUE');   ELSE      DBMS_OUTPUT.PUT_LINE('Bernilai FALSE');   END IF; END; / 

Operator Logika

Operator Logika atau Logical Operator yaitu operator yang dipakai untuk melaksanakan operasi kecerdikan ibarat AND, OR, dan NOT.

Untuk lebih jelasnya, Anda sanggup melihat tabel dibawah ini:

Operator Deskripsi CONTOH
AND Bernilai TRUE jikalau kedua operand bernilai TRUE. A AND B
OR Bernilai TRUE jikalau salah satu operand bernilai TRUE. A OR B
NOT Digunakan untuk membalikkan nilai dari sebuah operant NOT A

Contoh Program

DECLARE   a BOOLEAN := true;   b BOOLEAN := false; BEGIN   IF (a AND b) THEN      DBMS_OUTPUT.PUT_LINE ('a AND b bernilai TRUE');   ELSE      DBMS_OUTPUT.PUT_LINE ('a AND b bernilai FALSE');    END IF;    IF (a OR b) THEN      DBMS_OUTPUT.PUT_LINE ('a OR b bernilai TRUE');   ELSE      DBMS_OUTPUT.PUT_LINE ('a OR b bernilai FALSE');    END IF;    IF (NOT a) THEN      DBMS_OUTPUT.PUT_LINE ('NOT a bernilai FALSE');   ELSE      DBMS_OUTPUT.PUT_LINE ('NOT a bernilai TRUE');    END IF; END; / 

Operator Precedence

Operator Precedence yaitu urutan dalam mengeksekusi sebuah operator. Operator yang mempunyai urutan yang tertinggi lah yang akan dihukum terlebih dahulu.

Di bawah ini yaitu tabel dari operator precedence, dari urutan tertinggi hingga terendah.

Operator Operasi
** perpangkatan
*, / perkalian, pembagian
+, -, || penambahan, pengurangan, dan penggabungan (concatenation)
=, <, >, <=, >=, <>, !=, =, ^=, IS NULL, LIKE, BETWEEN, IN comparison operator
NOT Negasi operator
AND Konjungsi operator
OR Inklusi operator




Tips Dan Trik Kontrol Statement Pada Pl/Sql

Ada 4 macam tipe kontrol statement pada Oracle PL/SQL, yaitu:
1. IF THEN Statement
2. IF THEN ELSE Statement
3. IF THEN ELSIF Statement
4. Nested IF Statement (IF Bersarang)
5. CASE Statement

Kelima kontrol statement diatas akan kita bahas lebih detail di tutorial ini.

IF THEN Statement

Sintak Dasar

Dibawah ini yakni sintak dasar dari IF THEN Statement:

IF condition THEN   statement; END IF; 

Contoh Program #1

Di bawah ini yakni teladan IF THEN Statement dalam kegiatan PL/SQL:

DECLARE   c NUMBER(2) := 5; BEGIN   IF (c < 10) THEN      DBMS_OUTPUT.PUT_LINE('Nilai C kurang dari 10');   END IF;    DBMS_OUTPUT.PUT_LINE('Nilai C yakni '||c); END; / 

Output #1

Output dari kegiatan diatas akan menghasilkan output menyerupai dibawah ini:

Nilai C kurang dari 10 Nilai C yakni 5  PL/SQL procedure successfully completed. 

Contoh Program #2

Pada teladan kegiatan #2, Kita akan menerapkan IF THEN Statement dengan kombinasi query SQL.

DECLARE  id_pegawai pegawai.id%type := 1;  gaji_pegawai pegawai.gaji%type; BEGIN  SELECT gai  INTO gaji_pegawai  FROM pegawai  WHERE id = id_pegawai;    IF (gaji_pegawai <= 1000000) THEN   UPDATE pegawai   SET honor = honor + 100000   WHERE id = id_pegawai;   dbms_output.put_line ('Gaji pegawai berhasil di update');  END IF; END; / 

Output #2

Gaji pegawai berhasil di update  PL/SQL procedure successfully completed. 

IF THEN ELSE Statement

Sintak Dasar

Di bawah ini yakni sintak dasar dari IF THEN ELSE Statement:

IF condition THEN    statement; ELSE    statement; END IF; 

Contoh Program

Di bawah ini yakni teladan IFT THEN ELSE Statement dalam kegiatan PL/SQL

DECLARE   c NUMBER(2) := 5; BEGIN   IF (c < 10) THEN      DBMS_OUTPUT.PUT_LINE('Nilai C kurang dari 10');   ELSE      DBMS_OUTPUT.PUT_LINE('Nilai C lebih dari 10');   END IF;    DBMS_OUTPUT.PUT_LINE('Nilai C yakni '||c); END; 

Output

Nilai C kurang dari 10 Nilai C yakni 5  PL/SQL procedure successfully completed. 

IF THEN ELSIF Statement

Sintak Dasar

Di bawah ini yakni sintak dasar dari IF THEN ELSIF Statement

IF(ekspresi boolean 1)THEN    Statement1; -- statement1 dijalankan apabila lisan boolean 1 bernilai true ELSIF(ekspresi boolean 2) THEN    Statement2; -- statement2 dijalankan apabila lisan boolean 2 bernilai true ELSIF(ekspresi boolean 3) THEN    Statement3; -- statement3 dijalankan apabila eskpresi boolean 3 bernilai true ELSE    Statement4; -- statement4 akan dijalankan kalau tidak ada bernilai true END IF; 

Contoh Program

Di bawah ini yakni teladan IF THEN ELSIF dalam kegiatan PL/SQL:

DECLARE  a number(3) := 100; BEGIN  IF ( a = 10 ) THEN   dbms_output.put_line('Nilai a yakni 10' );  ELSIF ( a = 20 ) THEN   dbms_output.put_line('Nilai a yakni 20' );  ELSIF ( a = 30 ) THEN   dbms_output.put_line('Nilai a yakni 30' );  ELSE   dbms_output.put_line('Tidak ada nilai yang sesuai');  END IF;  dbms_output.put_line('Nilai a yakni : '|| a ); END; / 

Output:
Program PL/SQL diatas akan mengeluarkan output di bawah ini:

Tidak ada nilai yang sesuai Nilai yakni : 100 

Nested IF Stetement

Sintak Dasar

Di bawah ini yakni sintak dasar dari IF Bersarang (Nested IF Statement):

IF(ekspresi boolean 1)THEN  -- statement akan dijalankan kalau lisan boolean 1 TRUE  IF(ekspresi boolean 2) THEN   -- statement akan dijalankan kalau lisan boolean 2 TRUE   statement2;  END IF; ELSE  -- statement akan dijalankan kalau lisan boolean 1 FALSE  else-statements; END IF; 

Contoh Program

DECLARE    a number(3) := 100;    b number(3) := 200; BEGIN    IF( a = 100 ) THEN       -- kalau kondisi diatas bernilai true, maka akan dicek kondisi dibawah       IF( b = 200 ) THEN          -- kalau kondisi bernilai true, maka akan menampilkan output          DBMS_OUTPUT.PUT_LINE('Nilai  a yakni 100 dan b yakni 200' );       END IF;    END IF;    DBMS_OUTPUT.PUT_LINE('Nilai a yakni : ' || a );    DBMS_OUTPUT.PUT_LINE('Nilai b yakni : ' || b ); END; / 

Output:

Nilai  a yakni 100 dan b yakni 200 Nilai a yakni : 100 Nilai b yakni : 200  PL/SQL procedure successfully completed. 

CASE Statement

Sintak Dasar

Di bawah ini yakni sintak dasar dari CASE Statement

CASE selector  WHEN 'value1' THEN Statement1;  WHEN 'value2' THEN Statement2;  WHEN 'value3' THEN Statement3;  ...  ELSE Statement; -- default case END CASE; 

Ada 2 bentuk CASE Statement menyerupai pada kedua teladan kegiatan di bawah ini:

Contoh Progam #1

Di bawah ini yakni teladan CASE Stetement dalam kegiatan PL/SQL:

DECLARE  nilai CHAR(1) := 'A'; BEGIN  CASE nilai   WHEN 'A' THEN DBMS_OUTPUT.PUT_LINE('Sempurna');   WHEN 'B' THEN DBMS_OUTPUT.PUT_LINE('Sangat Baik');   WHEN 'C' THEN DBMS_OUTPUT.PUT_LINE('Baik');   WHEN 'D' THEN DBMS_OUTPUT.PUT_LINE('Cukup');   WHEN 'F' THEN DBMS_OUTPUT.PUT_LINE('Coba Kuliah lagi..');   ELSE DBMS_OUTPUT.PUT_LINE('Gagal');  END CASE; END; /  
Output #1:

Sempurna  PL/SQL procedure successfully completed. 

Contoh Program #2

DECLARE  nilai CHAR(1) := 'A'; BEGIN  CASE    WHEN nilai = 'A' THEN DBMS_OUTPUT.PUT_LINE('Sempurna');   WHEN nilai = 'B' THEN DBMS_OUTPUT.PUT_LINE('Sangat Baik');   WHEN nilai = 'C' THEN DBMS_OUTPUT.PUT_LINE('Baik');   WHEN nilai = 'D' THEN DBMS_OUTPUT.PUT_LINE('Cukup');   WHEN nilai = 'F' THEN DBMS_OUTPUT.PUT_LINE('Coba Kuliah lagi..');   ELSE DBMS_OUTPUT.PUT_LINE('Gagal');  END CASE; END; / 

Output

Sempurna  PL/SQL procedure successfully completed. 

Tips Dan Trik Kontrol Perulangan Pada Pl/Sql

PL/SQL Mempunyai beberapa tipe Looping (perulangan), yaitu:

  • Basic Loop
  • For Loop
  • While Loop
  • Nested Loop (Perulangan bersarang)

Label Pada Looping

Anda sanggup menunjukkan label pada Looping dengan menunjukkan tanda "<<" pada awal label dan tanda ">>" pada selesai label.

Untuk lebih jelasnya, Anda sanggup pribadi mencoba kegiatan PL/SQL menyerupai di bawah ini:

DECLARE   x number(1);   y number(1); BEGIN   << loop_luar >>   FOR x IN 1..5 LOOP     << loop_dalam >>     FOR y IN 1..5 LOOP  DBMS_OUTPUT.PUT_LINE('x adalah: '|| x || ' dan y adalah: ' || y);     END LOOP loop_dalam;   END loop loop_luar; END; / 

Output

x adalah: 1 dan y adalah: 1 x adalah: 1 dan y adalah: 2 x adalah: 1 dan y adalah: 3 x adalah: 1 dan y adalah: 4 x adalah: 1 dan y adalah: 5 x adalah: 2 dan y adalah: 1 x adalah: 2 dan y adalah: 2 x adalah: 2 dan y adalah: 3 x adalah: 2 dan y adalah: 4 x adalah: 2 dan y adalah: 5 x adalah: 3 dan y adalah: 1 x adalah: 3 dan y adalah: 2 x adalah: 3 dan y adalah: 3 x adalah: 3 dan y adalah: 4 x adalah: 3 dan y adalah: 5 x adalah: 4 dan y adalah: 1 x adalah: 4 dan y adalah: 2 x adalah: 4 dan y adalah: 3 x adalah: 4 dan y adalah: 4 x adalah: 4 dan y adalah: 5 x adalah: 5 dan y adalah: 1 x adalah: 5 dan y adalah: 2 x adalah: 5 dan y adalah: 3 x adalah: 5 dan y adalah: 4 x adalah: 5 dan y adalah: 5  PL/SQL procedure successfully completed. 

Basic Loop

Sintak Dasar

LOOP   statement yang akan dijalankan; END LOOP; 

Contoh Program #1

DECLARE   x number := 10; BEGIN   LOOP     DBMS_OUTPUT.PUT_LINE(x);     x := x + 5;     IF x > 50 THEN       exit;     END IF;   END LOOP;      DBMS_OUTPUT.PUT_LINE('Hasil selesai x ialah : ' || x); END; / 

Output #1:

10 15 20 25 30 35 40 45 50 Hasil selesai x ialah : 55  PL/SQL procedure successfully completed. 

Selain memakai keyword "exit" untuk keluar dari looping, Anda juga sanggup memakai statement EXIT WHEN, menyerupai pola di bawah ini:

Contoh Program#2

DECLARE   x number := 10; BEGIN   LOOP     DBMS_OUTPUT.PUT_LINE(x);     x := x + 5;     EXIT WHEN x > 50;   END LOOP;      DBMS_OUTPUT.PUT_LINE('Hasil selesai x ialah : ' || x); END; / 

Output #2

10 15 20 25 30 35 40 45 50 Hasil selesai x ialah : 55  PL/SQL procedure successfully completed. 

For Loop

Sintak dasar

FOR counter IN initial_value .. final_value LOOP  sequence_of_statements; END LOOP; 

Contoh Program

DECLARE    a number(2); BEGIN    FOR a in 5 .. 20 LOOP       dbms_output.put_line('Nilai bilangan a ialah : ' || a);    END LOOP; END; / 

Output:

Nilai bilangan a ialah : 5 Nilai bilangan a ialah : 6 Nilai bilangan a ialah : 7 Nilai bilangan a ialah : 8 Nilai bilangan a ialah : 9 Nilai bilangan a ialah : 10 Nilai bilangan a ialah : 11 Nilai bilangan a ialah : 12 Nilai bilangan a ialah : 13 Nilai bilangan a ialah : 14 Nilai bilangan a ialah : 15 Nilai bilangan a ialah : 16 Nilai bilangan a ialah : 17 Nilai bilangan a ialah : 18 Nilai bilangan a ialah : 19 Nilai bilangan a ialah : 20  PL/SQL procedure successfully completed. 

Reverse For Loop

Reverse For Loop ialah kebalikan dari For Loop. Dia akan melaksanakan perulangan secara decrement (dari yang terakhir hingga dengan yang pertama).

Contoh Program

DECLARE    a number(2); BEGIN    FOR a IN REVERSE 5 .. 20 LOOP       DBMS_OUTPUT.PUT_LINE('Nilai bilangan a ialah : ' || a);    END LOOP; END; / 

Output

Nilai bilangan a ialah : 20 Nilai bilangan a ialah : 19 Nilai bilangan a ialah : 18 Nilai bilangan a ialah : 17 Nilai bilangan a ialah : 16 Nilai bilangan a ialah : 15 Nilai bilangan a ialah : 14 Nilai bilangan a ialah : 13 Nilai bilangan a ialah : 12 Nilai bilangan a ialah : 11 Nilai bilangan a ialah : 10 Nilai bilangan a ialah : 9 Nilai bilangan a ialah : 8 Nilai bilangan a ialah : 7 Nilai bilangan a ialah : 6 Nilai bilangan a ialah : 5  PL/SQL procedure successfully completed. 

While Loop

Sintak Dasar

WHILE condition LOOP  statement; END LOOP; 

Contoh Program

DECLARE  a number(2) := 5; BEGIN  WHILE a <= 15 LOOP   DBMS_OUTPUT.PUT_LINE('Nilai dari a ialah : ' || a);   a := a + 1;  END LOOP; END; / 

Output

Nilai dari a ialah : 5 Nilai dari a ialah : 6 Nilai dari a ialah : 7 Nilai dari a ialah : 8 Nilai dari a ialah : 9 Nilai dari a ialah : 10 Nilai dari a ialah : 11 Nilai dari a ialah : 12 Nilai dari a ialah : 13 Nilai dari a ialah : 14 Nilai dari a ialah : 15  PL/SQL procedure successfully completed. 

Nested Loop

Nested Loop atau perulangan bersarang ialah perulangan di dalam perulangan.

Sintak Dasar Nested Loop

LOOP   statement1;   LOOP     statement2;   END LOOP; END LOOP; 

Sintak Dasar Nested For Loop

FOR counter1 IN initial_value1 .. final_value1 LOOP    statement1;    FOR counter2 IN initial_value2 .. final_value2 LOOP       statements2;    END LOOP; END LOOP; 

Sintak Dasar Nested While Loop

WHILE condition1 LOOP    statements1;    WHILE condition2 LOOP      statements2;    END LOOP; END LOOP; 

Contoh Program

DECLARE   i number(3);   j number(3); BEGIN   i := 2;   LOOP      j:= 2;      LOOP         EXIT WHEN ((mod(i, j) = 0) or (j = i));         j := j +1;      END LOOP;      IF (j = i ) THEN         DBMS_OUTPUT.PUT_LINE(i || ' ialah bilangan prima');      END IF;      i := i + 1;      EXIT WHEN i = 50;   END LOOP; END; / 

Output:

2 ialah bilangan prima 3 ialah bilangan prima 5 ialah bilangan prima 7 ialah bilangan prima 11 ialah bilangan prima 13 ialah bilangan prima 17 ialah bilangan prima 19 ialah bilangan prima 23 ialah bilangan prima 29 ialah bilangan prima 31 ialah bilangan prima 37 ialah bilangan prima 41 ialah bilangan prima 43 ialah bilangan prima 47 ialah bilangan prima  PL/SQL procedure successfully completed. 

Continue Statement

Continue statement dipakai untuk men-skip (meloncat) dari proses perulangan.

Sintak Dasar

CONTINUE; 

Contoh Program

Program di bawah ini akan mencetak angka 1 hingga dengan 10, kecuali angka 5.

DECLARE    a number(2) := 1; BEGIN    WHILE a <= 10 LOOP       DBMS_OUTPUT.PUT_LINE ('Nilai dari a ialah : ' || a);        a := a + 1;        IF a = 5 THEN          -- skip perulangan dengan memakai CONTINUE          a := a + 1;          CONTINUE;        END IF;    END LOOP; END; / 

Output:

Nilai dari a ialah : 1 Nilai dari a ialah : 2 Nilai dari a ialah : 3 Nilai dari a ialah : 4 Nilai dari a ialah : 6 Nilai dari a ialah : 7 Nilai dari a ialah : 8 Nilai dari a ialah : 9 Nilai dari a ialah : 10  PL/SQL procedure successfully completed. 

GO TO Statement

Sintak Dasar

GOTO label; .. .. << label >> statement; 

Contoh Program

DECLARE    a number(2) := 10; BEGIN    <<label_loop>>     WHILE a < 20 LOOP       DBMS_OUTPUT.PUT_LINE ('Nilai dari a ialah ' || a);       a := a + 1;       IF a = 15 THEN          a := a + 1;          GOTO label_loop;       END IF;    END LOOP; END; / 

Output

Nilai dari a ialah 10 Nilai dari a ialah 11 Nilai dari a ialah 12 Nilai dari a ialah 13 Nilai dari a ialah 14 Nilai dari a ialah 16 Nilai dari a ialah 17 Nilai dari a ialah 18 Nilai dari a ialah 19  PL/SQL procedure successfully completed. 

Tips Dan Trik Bermain Main Dengan String Di Pl/Sql

Tipe String

Ada 3 tipe String di Oracle PL/SQL, yaitu:

  • Fixed-Length String

    Adalah String yang panjangnya fixed (sudah ditentukan). Apabila panjangnya kurang, maka secara otomatis akan menambahkan spasi kosong hingga dengan akhir. Tipe data yang biasa dipakai ialah CHAR, NCHAR

  • Variable-Length String

    Adalah string yang panjangnya dinamis (variable). Memori akan menyimpan string tersebut sesuai dengan panjang string sebenarnya, walaupun ukurannya lebih kecil dari panjang string yang ditentukan. Tipe data yang biasa dipakai ialah VARCHAR, VARCHAR2, NVARCHAR2.

  • CLOB (Character Large Object)

    CLOB ialah tipe data yang dipakai untuk menyimpan data karakter yang ukurannya sangat besar hingga tera bytes.

String Dalam Program

Dibawah ini ialah pola agenda PL/SQL yang memakai deklarasi String.

DECLARE    nama VARCHAR2(30);    jurusan VARCHAR2(40);    greetings CLOB;    status CHAR(1); BEGIN    nama := 'Nursalim';    jurusan := 'Teknik Informatika';    greetings := 'Hello! Saya Nursalim dari Jurusan Teknik Informatika UNINDRA';    status := 'Y';        IF status = 'Y' THEN       DBMS_OUTPUT.PUT_LINE(nama);       DBMS_OUTPUT.PUT_LINE(jurusan);       DBMS_OUTPUT.PUT_LINE(greetings);    END IF; END; / 

Menggabungkan Dua String

Untuk menggabungkan dua string, Anda sanggup memakai operator concatenation ( || ). Untuk lebih jelasnya, Anda sanggup lihat menyerupai pola agenda di bawah:

DECLARE    string1 VARCHAR2(30);    string2 VARCHAR2(40);     BEGIN    string1 := 'Nursalim';    string2 := 'Teknik Informatika';     DBMS_OUTPUT.PUT_LINE(string1||' Jurusan '||string2);    END; / 

String Built-in Function

Di bawah ini ialah tabel macam-macam fungsi String bawaan (built-int) Oracle PL/SQL

Fungsi Deskripsi
ASCII(x) Menghasilkan nilai ASCII dari karakter x
CHR(x) Menghasilkan nilai karakter dari ASCII x
CONCAT(x,y) Menggabungkan string x dan y
INITCAP(x) Menghasilkan inital letter, yaitu kata yang aksara depannya kapital sedangkan aksara selanjutnya ialah aksara kecil (lowercase).
INSTR(x, str1, [,start] [,occourence] ) Mencari st1 dalam string x menurut posisi awal [start] dan sebanyak [occurence].
LENGTH(x) Mencari panjang dari suatu string x.
LOWER(x) Mengubah String x menjadi aksara kecil (lowercase).
LPAD(x,width[,str1]) Menambahkan (padding) str1 pada string dengan posisi sebelah kiri hingga dengan batas maksimum (width).
LTRIM(x[,str1]) Melakukan proses trim (menghapus spasi) di sebelah string x.
NVL(x,value) Jika nilai x ialah null maka akan menghasilkan nilai value. Sedangkan kalau tidak maka akan menghasilkan x.
NVL2(x,value1, value2) Menghasilkan value1 jikalau x tidak sama dengan null, dan menghasilkan value2 jikalau x sama dengan null.
REPLACE(x,string_search, string_replace) Mengganti string_search dengan string_replace pada sebuah string x.
RPAD(x,width[, pad_string]) PAD string x dari sebelah kanan dengan menambahkan pad_string sepanjang string width
RTRIM(x[, trim_string]) TRIM dari sebelah kanan string x
SUBSTR(x, start[, length]) Menghasilkan nilai substring dari string x menurut posisi awal (start) dan panjang string substring (length)
TRIM([trim_char FROM] x) Menghapus/Menghilangkan trim_char dari string x.
UPPER(x) Mengubah String x menjadi aksara besar (uppercase)

Contoh Program

DECLARE    str1 VARCHAR2(50) := 'Selamat!! mencar ilmu PL/SQL ya..';    str2 VARCHAR2(50) := '....Jangan lupa siapin kopi....'; BEGIN    DBMS_OUTPUT.PUT_LINE('str1 = '||str1);    DBMS_OUTPUT.PUT_LINE('str2 = '||str2);    DBMS_OUTPUT.PUT_LINE('CONCAT (str1,str2) = '||CONCAT(str1,str2));    DBMS_OUTPUT.PUT_LINE('INITCAP (str1) = '||INITCAP(str1));    DBMS_OUTPUT.PUT_LINE('INSTR (str1, ''e'', 1) = '||INSTR(str1, 'e', 1));    DBMS_OUTPUT.PUT_LINE('LENGTH (str1) = '||LENGTH(str1));    DBMS_OUTPUT.PUT_LINE('LOWER (str1) = '||LOWER(str1));    DBMS_OUTPUT.PUT_LINE('REPLACE (str1) = '||REPLACE(str1,'a','@'));    DBMS_OUTPUT.PUT_LINE('SUBSTR (str1, 1, 10) = '||SUBSTR(str1,1,10));    DBMS_OUTPUT.PUT_LINE('SUBSTR (str1, -10) = '||SUBSTR(str1,-11));    DBMS_OUTPUT.PUT_LINE('UPPER (str1) = '||UPPER(str1)); END;  

Output:

str1 = Selamat!! mencar ilmu PL/SQL ya.. str2 = ....Jangan lupa siapin kopi.... CONCAT (str1,str2) = Selamat!! mencar ilmu PL/SQL ya......Jangan lupa siapin kopi.... INITCAP (str1) = Selamat!! Belajar Pl/Sql Ya.. INSTR (str1, 'e', 1) = 2 LENGTH (str1) = 29 LOWER (str1) = selamat!! mencar ilmu pl/sql ya.. REPLACE (str1) = Sel@m@t!! bel@j@r PL/SQL y@.. SUBSTR (str1, 1, 10) = Selamat!!  SUBSTR (str1, -10) = PL/SQL ya.. UPPER (str1) = SELAMAT!! BELAJAR PL/SQL YA..  PL/SQL procedure successfully completed. 


Tips Dan Trik Array Pada Pl/Sql

Apa Itu Array?

Array yaitu tipe data collection yang berisi kumpulan data yang memiliki tipe data yang sama. Pada Oracle PL/SQL, Array dimulai dari index ke-1.

Ukuran dari Array yaitu tetap.

Membuat Array

Di bawah ini yaitu sintak dasar untuk menciptakan Array di PL/SQL:

Sintak Dasar:

CREATE OR REPLACE TYPE varray_type_name IS VARRAY(n) of ; 

Contoh:

CREATE Or REPLACE TYPE arrayMHS AS VARRAY(5) OF VARCHAR2(10); / Type created. 

Contoh Program #1

Pada Contoh Program#1 ini kita akan menciptakan jadwal PL/SQL untuk menyimpan data di Array.

DECLARE    type arraynama IS VARRAY(5) OF VARCHAR2(50);    type arraynilai IS VARRAY(5) OF INTEGER;    names arraynama;    grades arraynilai;    total integer; BEGIN    names := arraynama('Nursalim', 'Nani Indriyani', 'Iskiyati', 'Nurul Hikmah', 'Sri Rahayu');    grades:= arraynilai(98, 97, 78, 87, 92);    total := names.count;    DBMS_OUTPUT.PUT_LINE('Total '|| total || ' Mahasiswa');    FOR i in 1 .. total LOOP       DBMS_OUTPUT.PUT_LINE('Nama Mahasiswa : ' || names(i) || '     Nilai: ' || grades(i));    END LOOP; END; / 

Output

Total 5 Mahasiswa Nama Mahasiswa : Nursalim     Nilai: 98 Nama Mahasiswa : Nani Indriyani     Nilai: 97 Nama Mahasiswa : Iskiyati     Nilai: 78 Nama Mahasiswa : Nurul Hikmah     Nilai: 87 Nama Mahasiswa : Sri Rahayu     Nilai: 92  PL/SQL procedure successfully completed. 

Contoh Program #2

Pada Contoh Program #2 ini, kita akan menciptakan Array yang datanya berasal dari sebuah tabel di Oracle database. Prosesnya yaitu Anda query terlebih dahulu dengan memakai Cursor dan datanya di simpan dalam Array.

Langkah-langkahnya adalah:

1. Buat tabel Mahasiswa

CREATE TABLE MAHASISWA (   NPM      VARCHAR2(10 BYTE),   NAMA     VARCHAR2(50 BYTE),   JURUSAN  VARCHAR2(50 BYTE) ); 

2. Insert data ke tabel Mahasiswa

SET DEFINE OFF; Insert into MAHASISWA    (NPM, NAMA, JURUSAN)  Values    ('2015001', 'Nursalim', 'Teknik Informatika'); Insert into MAHASISWA    (NPM, NAMA, JURUSAN)  Values    ('2015002', 'Nani Indriyani', 'Bahasa Inggris'); Insert into MAHASISWA    (NPM, NAMA, JURUSAN)  Values    ('2015003', 'Desi Lisnawati', 'Biologi'); COMMIT;  

3. Buat jadwal PL/SQL untuk menyimpan data mahasiswa dalam bentuk Array.

DECLARE    CURSOR c_mahasiswa    IS SELECT nama FROM mahasiswa;     TYPE c_list IS VARRAY (6) OF mahasiswa.nama%TYPE;     daftar_nama   c_list := c_list ();    counter     INTEGER := 0; BEGIN    FOR n IN c_mahasiswa    LOOP       counter := counter + 1;       daftar_nama.EXTEND;       daftar_nama (counter) := n.nama;       DBMS_OUTPUT.put_line (          'Nama Mahasiswa (' || counter || '):' || daftar_nama (counter));    END LOOP; END; 

4. Output

Nama Mahasiswa (1):Nursalim Nama Mahasiswa (2):Nani Indriyani Nama Mahasiswa (3):Desi Lisnawati  PL/SQL procedure successfully completed. 

Tips Dan Trik Procedure Pada Pl/Sql

Apa itu Procedure?

Procedure yakni salah satu subprogram di Oracle PL/SQL yang tidak menunjukkan nilai (return value) secara langsung. Procedure disimpan dalam database.

Membuat Procedure

Untuk menciptakan procedure di Oracle PL/SQL kita sanggup memakai perintah CREATE OR REPLACE PROCEDURE.

Di bawah ini yakni sintak dasar untuk menciptakan procedure:

CREATE [OR REPLACE] PROCEDURE procedure_name [(parameter_name [IN | OUT | IN OUT] type [, ...])] {IS | AS} BEGIN < procedure_body > END procedure_name; 

Keterangan:

- procedure_name yakni nama yang dipakai untuk prosedure
- [OR REPLACE] dipakai untuk modifikasi procedure yang telah dibentuk (existing procedure)
- paramater_name yakni parameter yang ditambahkan dalam procedure
- IS atau AS yakni keyword yang dipakai untuk standalone procedure.
- procedure_body yakni bab isi (executable) dari procedure.

Contoh Program

Di bawah ini yakni teladan aktivitas Oracle PL/SQL untuk menciptakan procedure mencetak goresan pena "Selamat Belajar PL/SQL.. PL/SQL Itu Asyik" sebanyak 10 kali.

CREATE OR REPLACE PROCEDURE cetak_tulisan IS   CNT INT(3); BEGIN   FOR CNT IN 1..5 LOOP     DBMS_OUTPUT.PUT_LINE('Selamat Belajar PL/SQL.. PL/SQL Itu Asyik');   END LOOP; END cetak_tulisan; / 

Eksekusi Procedure

Untuk menjalankan procedure yang telah kita buat, kita sanggup memakai perintah EXECUTE nama_procedure; pada jendela SQLPlus.

SQL> set serveroutput on; SQL> execute cetak_tulisan; Selamat Belajar PL/SQL.. PL/SQL Itu Asyik Selamat Belajar PL/SQL.. PL/SQL Itu Asyik Selamat Belajar PL/SQL.. PL/SQL Itu Asyik Selamat Belajar PL/SQL.. PL/SQL Itu Asyik Selamat Belajar PL/SQL.. PL/SQL Itu Asyik  PL/SQL procedure successfully completed.  

Menghapus Procedure

Untuk menghapus procedure, Anda sanggup memakai perintah/sintak di bawah ini:

DROP PROCEDURE nama_procedure; 

Contoh:

SQL> DROP PROCEDURE cetak_tulisan;  Procedure dropped. 

Query Melihat Daftar Procedure.

Di bawah ini yakni query untuk melihat daftar procedure yang ada di database:

SQL> set linesize 1000; SQL> SELECT object_id, object_name, object_type FROM user_procedures;   OBJECT_ID OBJECT_NAME                     OBJECT_TYPE ---------- -------------------------------------------------     114664 CETAK_TULISAN                   PROCEDURE  



Tips Dan Trik Function Pada Pl/Sql

Apa itu Function?

Function gotong royong ibarat dengan Procedure, HANYA function akan menawarkan nilai balikan (return value).

Lihat Juga : Procedure pada Oracle PL/SQL.

Sintak Dasar

Di bawah ini yaitu sintak dasar untuk menciptakan function di Oracle PL/SQL.

CREATE [OR REPLACE] FUNCTION function_name [(parameter_name [IN | OUT | IN OUT] type [, ...])] RETURN return_datatype {IS | AS} BEGIN < function_body > END [function_name]; 

Keterangan:

- function_name yaitu nama function yang akan kita buat. Sifatnya mandatory.
- parameter_name yaitu parameter yang akan ditambahkan. Sifatnya opsional
- return_datatype yaitu tipe data yang akan dibalikkan (return value).
- function_body yaitu bab badan dari function yang berisi kegiatan PL/SQL.

Contoh Program


Di bawah ini yaitu rujukan kegiatan sederhana untuk menciptakan function di Oracle PL/SQL

CREATE OR REPLACE FUNCTION NANO.tambah(bil1 in NUMBER, bil2 in NUMBER) RETURN NUMBER IS    jumlah NUMBER(5); BEGIN     jumlah := bil1+bil2;          RETURN jumlah; END tambah; /  

Memanggil Function

Untuk memanggil function yang telah kita buat ibarat pada rujukan kegiatan diatas, Ada 2 macam cara yaitu:

1. Menggunakan kegiatan PL/SQL

Kita sanggup memanggil function yang telah kita buat dengan memakai kegiatan PL/SQL, caranya yaitu sebagai berikut:

DECLARE   bil1 NUMBER(3);   bil2 NUMBER(3); BEGIN   bil1 := 10;   bil2 := 5;      -- Memanggil function tambah(bil1,bil2)      DBMS_OUTPUT.PUT_LINE('Hasil penjumlahan '||bil1||' dan '||bil2||' yaitu '|| tambah(bil1, bil2)); END; 

Output

Hasil penjumlahan 10 dan 5 yaitu 15  PL/SQL procedure successfully completed. 

2. Menggunakan Query

Selain memakai kegiatan PL/SQL ibarat diatas, Kita juga sanggup memanggil function dengan memakai query. Contohnya adalah:

SQL> SELECT tambah(10,5) FROM dual;  TAMBAH(10,5) ------------           15 

Melihat Daftar Function

Untuk melihat daftar function yang ada di database, Anda sanggup memakai Query data dictionary di bawah ini:

SQL> SELECT object_name   2  FROM user_objects   3  WHERE object_type = 'FUNCTION';  OBJECT_NAME ------------------------------------------- TAMBAH  

Menghapus Function

Untuk menghapus function yang telah kita buat, Kita sanggup memakai sintak di bawah ini:

DROP FUNCTION function_name; 

Contoh:

SQL> DROP FUNCTION tambah;  Function dropped.  

Tips Dan Trik Cursors Pada Pl/Sql

Apa Itu Cursor?

Pada agenda PL/SQL, kita tidak dapat menyimpan data hasil query yang lebih dari 1 record di variabel. Untuk menyimpan data yang lebih dari 1 record, maka gunakanlah Cursor. Karena cursor berperan sebagai penampung data dari hasil query.

Jenis Cursor

Ada 2 jenis cursor pada oracle PL/SQL, yaitu:

1. Implicit Cursor

Implicit Cursor yaitu cursor yang di deklarasikan dan dikelola secara otomatis oleh PL/SQL untuk semua operasi SELECT Statement dan DML (Data Manipulation Language). Implicit cursor akan menghasilkan 1 row/record.

Contoh:

SELECT employe_name INTO vName FROM Employee Where ROWNUM = '1'; 


2. Explicit Cursor

Explicit Cursor yaitu cursor yang didefiniskan pada bab deklarasi (DECLARE) dan biasanya memakai prosedur open, fetching, dan close cursor.

Tahapan Dalam Cursor

Ada beberapa tahapan atau proses dalam menciptakan cursor di Oracle PL/SQL, yaitu:

1. Deklarasi (DECLARE)
Tahapan ini dipakai untuk mendeklarasikan sebuah cursor. Sintaknya adalah:

CURSOR cursor_name IS SELECT ...; 

2. Open
Tahapan ini dipakai untuk membuka atau mengaktifkan sebuah cursor. Sintaknya adalah:

OPEN cursor_name; 

3. Fetching Data (Mengambil data)
Tahapan ini dipakai untuk mengambil data dari sebuah cursor dan ditampung dalam sebuah variabel yang telah ditentukan. Sintaknya yaitu :

FETCH cursor_name INTO variable_list; 

4. CLOSE (Menutup cursor).
Tahapan ini dipakai untuk menutup atau me-nonaktifkan sebuah cursor. Sintaknya yaitu :

CLOSE cursor_name; 

Atribut Pada Cursor

Di bawah ini yaitu atribut-atribut yang sering dipakai saat menciptakan sebuah cursor di PL/SQL. Biasanya dipakai pada implicit cursor.

Atribut Keterangan
SQL%ROWCOUNT Digunakan untuk menampilkan jumlah record yang dihasilkan dari SELECT, UPDATE, dan DELETE statement.
SQL%FOUND Bernilai TRUE jikalau cursor menghasilkan record/baris atau record berhasil di update atau di delete
SQL%NOTFOUND Kebalikan dari SQL%FOUND, yaitu bernilai TRUE jikalau cursor tidak menghasilkan record/baris
SQL%ISOPEN Bernilai true jikalau cursor masih aktif (open)


Contoh Implicit Cursor

Di bawah ini yaitu 2 teladan agenda penggunaan Implicit Cursor pada Oracle PL/SQL:

Contoh Program #1 - Select Statement

DECLARE     v_emp_name varchar2(100); BEGIN     SELECT first_name || ' ' ||  last_name     INTO emp_name    FROM employees   WHERE employee_id=100;      DBMS_OUTPUT.PUT_LINE(v_emp_name); end;  

Contoh Program #2 - Upadate Statement

DECLARE     v_number_rows number(5); BEGIN   UPDATE employee    SET salary = salary + 1000;   IF SQL%NOTFOUND THEN     DBMS_OUTPUT.PUT_LINE('Tidak ada record yang berhasil di update');   ELSIF SQL%FOUND THEN     v_number_rows := SQL%ROWCOUNT;     DBMS_OUTPUT.PUT_LINE('Ada ' || v_number_rows || ' record yang telah berhasil di update');   END IF;  END; 

Contoh Explicit Cursor


Di bawah ini yaitu teladan agenda PL/SQL memakai Explicit Cursor:

Contoh #1 - LOOP Cursor

DECLARE     data_pegawai employees%rowtype;     CURSOR c_pegawai IS SELECT * FROM employees; BEGIN     IF NOT c_pegawai%ISOPEN THEN     OPEN c_pegawai;     END IF;     LOOP          EXIT WHEN c_pegawai%NOTFOUND;         FETCH c_pegawai INTO data_pegawai;         DBMS_OUTPUT.PUT_LINE(data_pegawai.first_name || ' ' || data_pegawai.last_name);     END LOOP;     CLOSE c_pegawai; END; 


Tips Dan Trik Record Pada Pl/Sql

Table-Based Record

Contoh:

DECLARE    mahasiswa_rec   mahasiswa%ROWTYPE; BEGIN    SELECT *      INTO mahasiswa_rec      FROM mahasiswa     WHERE npm = '2015001';     DBMS_OUTPUT.put_line ('NPM: ' || mahasiswa_rec.npm);    DBMS_OUTPUT.put_line ('Nama: ' || mahasiswa_rec.nama);    DBMS_OUTPUT.put_line ('Jurusan: ' || mahasiswa_rec.jurusan); END; / 

Output

NPM: 2015001 Nama: Nursalim Jurusan: Teknik Informatika  PL/SQL procedure successfully completed. 

Cursor-Based Record

Contoh:

DECLARE    CURSOR mahasiswa_cur    IS       SELECT npm, nama, jurusan FROM mahasiswa;     mahasiswa_rec   mahasiswa_cur%ROWTYPE; BEGIN    OPEN mahasiswa_cur;     LOOP       FETCH mahasiswa_cur INTO mahasiswa_rec;        EXIT WHEN mahasiswa_cur%NOTFOUND;       DBMS_OUTPUT.put_line ('NPM : '||mahasiswa_rec.npm);       DBMS_OUTPUT.put_line ('Nama : '||mahasiswa_rec.nama);       DBMS_OUTPUT.put_line ('Jurusan : '||mahasiswa_rec.jurusan);    END LOOP; END; / 

Output:

NPM : 2015001 Nama : Nursalim Jurusan : Teknik Informatika NPM : 2015002 Nama : Nani Indriyani Jurusan : Bahasa Inggris NPM : 2015003 Nama : Desi Lisnawati Jurusan : Biologi 


User-Defined Record

Contoh:

DECLARE    TYPE karyawan IS RECORD    (       nik     VARCHAR (50),       nama    VARCHAR (50),       jenis_kelamin   VARCHAR (50),       honor   NUMBER    );     karyawan1   karyawan;    karyawan2   karyawan; BEGIN    -- Data Karyawan 1    karyawan1.nik := '001';    karyawan1.nama := 'Nursalim';    karyawan1.jenis_kelamin := 'Laki-Laki';    karyawan1.gaji := 1000000;        -- Data Karyawan 2    karyawan2.nik := '002';    karyawan2.nama := 'Nani Indriyani';    karyawan2.jenis_kelamin := 'Perempuan';    karyawan2.gaji := 500000;        -- Cetak Data Karyawan 1    DBMS_OUTPUT.put_line ('Karyawan 1 NIK : ' || karyawan1.nik);    DBMS_OUTPUT.put_line ('Karyawan 1 Nama : ' || karyawan1.nama);    DBMS_OUTPUT.put_line ('Karyawan 1 Jenis Kelamin : ' || karyawan1.jenis_kelamin);    DBMS_OUTPUT.put_line ('Karyawan 1 Gaji : ' || karyawan1.gaji);        -- Cetak Data Karyawan 2    DBMS_OUTPUT.put_line ('Karyawan 2 NIK : ' || karyawan2.nik);    DBMS_OUTPUT.put_line ('Karyawan 2 Nama : ' || karyawan2.nama);    DBMS_OUTPUT.put_line ('Karyawan 2 Jenis Kelamin : ' || karyawan2.jenis_kelamin);    DBMS_OUTPUT.put_line ('Karyawan 2 Gaji : ' || karyawan2.gaji); END; / 

Output:

Karyawan 1 NIK : 001 Karyawan 1 Nama : Nursalim Karyawan 1 Jenis Kelamin : Laki-Laki Karyawan 1 Gaji : 1000000 Karyawan 2 NIK : 002 Karyawan 2 Nama : Nani Indriyani Karyawan 2 Jenis Kelamin : Perempuan Karyawan 2 Gaji : 500000  PL/SQL procedure successfully completed. 

Record Sebagai Parameter Store Procedure

Contoh:

DECLARE    TYPE karyawan IS RECORD    (       nik     VARCHAR (50),       nama    VARCHAR (50),       jenis_kelamin   VARCHAR (50),       honor   NUMBER    );     karyawan1   karyawan;    karyawan2   karyawan; PROCEDURE cetak_karyawan(data_karyawan karyawan) IS BEGIN     DBMS_OUTPUT.put_line ('Karyawan NIK : ' || data_karyawan.nik);    DBMS_OUTPUT.put_line ('Karyawan Nama : ' || data_karyawan.nama);    DBMS_OUTPUT.put_line ('Karyawan Jenis Kelamin : ' || data_karyawan.jenis_kelamin);    DBMS_OUTPUT.put_line ('Karyawan Gaji : ' || data_karyawan.gaji); END;     BEGIN    -- Data Karyawan 1    karyawan1.nik := '001';    karyawan1.nama := 'Nursalim';    karyawan1.jenis_kelamin := 'Laki-Laki';    karyawan1.gaji := 1000000;        -- Data Karyawan 2    karyawan2.nik := '002';    karyawan2.nama := 'Nani Indriyani';    karyawan2.jenis_kelamin := 'Perempuan';    karyawan2.gaji := 500000;        -- Cetak Data Karyawan    cetak_karyawan(karyawan1);    cetak_karyawan(karyawan2);     END; / 

Output:

Karyawan NIK : 001 Karyawan Nama : Nursalim Karyawan Jenis Kelamin : Laki-Laki Karyawan Gaji : 1000000 Karyawan NIK : 002 Karyawan Nama : Nani Indriyani Karyawan Jenis Kelamin : Perempuan Karyawan Gaji : 500000  PL/SQL procedure successfully completed. 


Tips Dan Trik Exception Handling Pada Pl/Sql

Sintak Dasar


DECLARE     BEGIN     EXCEPTION     WHEN exception1 THEN    exception1-handling-statements WHEN exception2 THEN    exception2-handling-statements WHEN exception3 THEN    exception3-handling-statements    ........ WHEN others THEN    exception3-handling-statements END; 

Contoh Program


DECLARE    v_npm     mahasiswa.npm%TYPE := '100';    v_nama   mahasiswa.nama%TYPE;    v_jurusan   mahasiswa.jurusan%TYPE; BEGIN    SELECT npm, nama, jurusan      INTO v_npm, v_nama, v_jurusan      FROM mahasiswa     WHERE npm = v_npm;     DBMS_OUTPUT.PUT_LINE ('NPM: ' || v_npm);    DBMS_OUTPUT.PUT_LINE ('Nama: ' || v_nama);    DBMS_OUTPUT.PUT_LINE ('Jurusan: ' || v_jurusan); EXCEPTION    WHEN NO_DATA_FOUND    THEN       DBMS_OUTPUT.put_line ('Data Mahasiswa tidak ditemukan!');    WHEN OTHERS    THEN       DBMS_OUTPUT.put_line ('Error!'); END; / 

Output

Data Mahasiswa tidak ditemukan!  PL/SQL procedure successfully completed. 

Membuat User Defined Exception


Sintak Dasar

DECLARE exception_name EXCEPTION; BEGIN IF condition THEN RAISE exception_name; END IF; EXCEPTION WHEN exception_name THEN statement; END; 

Contoh:

DECLARE    v_npm            mahasiswa.npm%TYPE := '1001';    v_nama          mahasiswa.nama%TYPE;    v_jurusan          mahasiswa.jurusan%TYPE;        -- user defined exception    invalid_npm_ex  EXCEPTION; BEGIN    IF length(v_npm) <= 7    THEN       RAISE invalid_npm_ex;    ELSE       SELECT nama, jurusan         INTO v_nama, v_jurusan         FROM mahasiswa        WHERE npm = v_npm;                DBMS_OUTPUT.PUT_LINE ('NPM: ' || v_npm);        DBMS_OUTPUT.PUT_LINE ('Nama: ' || v_nama);       DBMS_OUTPUT.PUT_LINE ('Jurusan: ' || v_jurusan);    END IF; EXCEPTION    WHEN invalid_npm_ex    THEN       DBMS_OUTPUT.put_line ('Panjang NPM harus 7 digit');    WHEN NO_DATA_FOUND    THEN       DBMS_OUTPUT.put_line ('Mahasiswa tidak ditemukan!');    WHEN OTHERS    THEN       DBMS_OUTPUT.put_line ('Error Teuing..!'); END; / 

Output

Panjang NPM harus 7 digit 

Tips Dan Trik Triggers Pada Pl/Sql

Sintak Dasar

Di bawah ini yakni sintak dasar untuk menciptakan trigger database di Oracle PL/SQL:

CREATE [OR REPLACE ] TRIGGER trigger_name {BEFORE | AFTER | INSTEAD OF } {INSERT [OR] | UPDATE [OR] | DELETE} [OF col_name] ON table_name [REFERENCING OLD AS o NEW AS n] [FOR EACH ROW] WHEN (condition) DECLARE    Declaration-statements BEGIN    Executable-statements EXCEPTION    Exception-handling-statements END; 

Contoh Program #1

Di bawah ini yakni rujukan aktivitas trigger Before Delete Or Insert Or Update di Oracle PL/SQL:

CREATE OR REPLACE TRIGGER name_changes_trigger    BEFORE DELETE OR INSERT OR UPDATE    ON mahasiswa    FOR EACH ROW DECLARE     BEGIN        IF length(:new.npm) < 7 THEN         raise_application_error(-20015, 'Panjang NPM dihentikan kurang dari 7 digit');    END IF;     DBMS_OUTPUT.put_line ('Nama Lama: ' || :OLD.nama);    DBMS_OUTPUT.put_line ('Nama Baru: ' || :NEW.nama); END; 

Coba Anda masukkan perintah insert data menyerupai dibawah ini dengan panjang NPM kurang dari 7 digit

INSERT INTO mahasiswa VALUES('001','Nanana','Teknik Komputer');  

Maka akan keluar error

ERROR at line 1: ORA-20015: Panjang NPM dihentikan kurang dari 7 digit ORA-06512: at "NANO.NAME_CHANGES_TRIGGER", line 6 ORA-04088: error during execution of trigger 'NANO.NAME_CHANGES_TRIGGER' 

Contoh Program#2

Di bawah ini yakni rujukan aktivitas trigger After Update di Oracle PL/SQL:

DROP TRIGGER NANO.NAME_CHANGES_TRIGGER_2;  CREATE OR REPLACE TRIGGER NANO.name_changes_trigger_2    AFTER UPDATE    ON NANO.MAHASISWA    FOR EACH ROW DECLARE     BEGIN        IF length(:new.npm) < 7 THEN         raise_application_error(-20015, 'Panjang NPM dihentikan kurang dari 7 digit');    END IF;     DBMS_OUTPUT.put_line ('Nama Lama: ' || :OLD.nama);    DBMS_OUTPUT.put_line ('Nama Baru: ' || :NEW.nama); END; /  
Coba Anda test trigger yang telah anda buat dengan memakai perintah UPDATE menyerupai di bawah ini:

SQL> SET serveroutput on; SQL> UPDATE mahasiswa SET nama = 'Naura Krasiva' WHERE npm = '2015002'; Nama Lama: Nani Indriyani Nama Baru: Naura Krasiva  1 row updated.  

Melihat Daftar Trigger

Di bawah ini yakni query untuk melihat daftar trigger yang ada di database:

SQL> set linesize 1000; SQL> select owner, object_name, status   2  from all_objects   3  where object_type = 'TRIGGER';  OWNER                          OBJECT_NAME                    STATUS ------------------------------ ------------------------------ ------- NANO                           NAME_CHANGES_TRIGGER           VALID NANO                           NAME_CHANGES_TRIGGER_2         VALID  

Tips Dan Trik Package Pada Pl/Sql

Membuat Package Spesification

Di bawah ini ialah pola kegiatan untuk menciptakan Package Specification di PL/SQL:

CREATE OR REPLACE PACKAGE mahasiswa_pkg AS    PROCEDURE cari_mahasiswa (v_npm mahasiswa.npm%TYPE); END mahasiswa_pkg; / 

Membuat Package Body

Di bawah ini ialah pola kegiatan untuk menciptakan Package Body di PL/SQL:

CREATE OR REPLACE PACKAGE BODY NANO.mahasiswa_pkg AS    PROCEDURE cari_mahasiswa (v_npm mahasiswa.npm%TYPE)    IS       v_nama      mahasiswa.nama%TYPE;       v_jurusan   mahasiswa.jurusan%TYPE;    BEGIN       SELECT nama, jurusan         INTO v_nama, v_jurusan         FROM mahasiswa        WHERE npm = v_npm;        DBMS_OUTPUT.put_line ('NPM: ' || v_npm);       DBMS_OUTPUT.put_line ('Nama: ' || v_nama);       DBMS_OUTPUT.put_line ('Jurusan: ' || v_jurusan);    END cari_mahasiswa; END mahasiswa_pkg; / 

Memanggil Package Dari Program PL/SQL

Contoh Program

Di bawah ini ialah pola pemanggilan package dari blok PL/SQL:

DECLARE   v_npm mahasiswa.npm%TYPE := '2015001'; BEGIN   mahasiswa_pkg.cari_mahasiswa(v_npm); END; 

Output

Program diatas akan menghasilkan output menyerupai di bawah ini:

NPM: 2015001 Nama: Nursalim Alfarizi Jurusan: Teknik Informatika  PL/SQL procedure successfully completed. 

Melihat Daftar Package

Untuk melihat daftar package yang telah kita buat, kita sanggup memakai query di bawah ini:

SQL> select object_name, object_type, status from user_objects   2  where object_type IN ('PACKAGE', 'PACKAGE BODY');  OBJECT_NAME                         OBJECT_TYPE         STATUS ----------------------------------- ------------------- ------- MAHASISWA_PKG                       PACKAGE             VALID MAHASISWA_PKG                       PACKAGE BODY        VALID 



Wednesday, November 13, 2019

Tips Dan Trik Data Collection Pada Pl/Sql

Index By Table


Sintak Dasar

Di bawah ini yakni sintak dasar Index By Table :

TYPE type_name IS TABLE OF element_type [NOT NULL] INDEX BY subscript_type; table_name type_name; 

Contoh Program #1

Di bawah ini yakni pola jadwal penggunaan Index By Table pada PL/SQL:

DECLARE    TYPE jurusan IS TABLE OF VARCHAR2(50)       INDEX BY VARCHAR2 (50);     daftar_mahasiswa   jurusan;    nama          VARCHAR2 (50); BEGIN    -- adding elements to the table    daftar_mahasiswa ('Nursalim') := 'Teknik Informatika';    daftar_mahasiswa ('Nani Indriyani') := 'Bahasa Inggris';    daftar_mahasiswa ('Ahmad Fatoni') := 'Ekonomi';    daftar_mahasiswa ('Naura Krasiva') := 'Public Relations';        -- printing the table    nama := daftar_mahasiswa.FIRST;     WHILE nama IS NOT NULL    LOOP       DBMS_OUTPUT.put_line (          'Nama ' || nama || ' Mengambil Jurusan ' || daftar_mahasiswa(nama));       nama := daftar_mahasiswa.NEXT (nama);    END LOOP; END; 

Output

Nama Ahmad Fatoni Mengambil Jurusan Ekonomi Nama Nani Indriyani Mengambil Jurusan Bahasa Inggris Nama Naura Krasiva Mengambil Jurusan Public Relations Nama Nursalim Mengambil Jurusan Teknik Informatika 

Contoh Program #2

Di bawah ini yakni pola jadwal penggunaan Index By Table pada PL/SQL:

DECLARE    CURSOR c_mahasiswa    IS       SELECT nama FROM mahasiswa;     TYPE c_list IS TABLE OF mahasiswa.nama%TYPE       INDEX BY BINARY_INTEGER;     daftar_nama   c_list;    counter     INTEGER := 0; BEGIN    FOR n IN c_mahasiswa    LOOP       counter := counter + 1;       daftar_nama (counter) := n.nama;       DBMS_OUTPUT.put_line (          'Mahasiswa(' || counter || ') : ' || daftar_nama (counter));    END LOOP; END; / 

Output

Mahasiswa(1) : Nursalim Alfarizi Mahasiswa(2) : Nani Indriyani Mahasiswa(3) : Desi Lisnawati 

Nested Table

Sintak Dasar

Di bawah ini yakni sintak dasar Nested Table pada PL/SQL :

TYPE type_name IS TABLE OF element_type [NOT NULL]; table_name type_name; 

Contoh Program #1

Di bawah ini yakni pola jadwal penggunaan Nested Table pada PL/SQL:

DECLARE    TYPE table_npm IS TABLE OF VARCHAR2 (10);    TYPE table_nama IS TABLE OF VARCHAR2 (50);    TYPE table_jurusan IS TABLE OF VARCHAR2 (50);     daftar_npm   table_npm;    daftar_nama   table_nama;    daftar_jurusan   table_jurusan;    total   INTEGER; BEGIN    daftar_npm := table_npm ('1001','1002','1003');    daftar_nama := table_nama ('Nursalim', 'Nani Indriyani', 'Desi Lisnawati');    daftar_jurusan := table_jurusan ('Teknik Informatika', 'Bahasa Inggris', 'Biologi');        total := daftar_npm.COUNT;    DBMS_OUTPUT.put_line ('Total ' || total || ' Mahasiswa');     FOR i IN 1 .. total    LOOP       DBMS_OUTPUT.put_line (          'Mahasiswa ('||(i)||')'||' --> NPM : '|| daftar_npm (i) || ', Nama : ' || daftar_nama (i) ||', Jurusan : '||daftar_jurusan(i));    END LOOP; END; 

Output

Total 3 Mahasiswa Mahasiswa (1) --> NPM : 1001, Nama : Nursalim, Jurusan : Teknik Informatika Mahasiswa (2) --> NPM : 1002, Nama : Nani Indriyani, Jurusan : Bahasa Inggris Mahasiswa (3) --> NPM : 1003, Nama : Desi Lisnawati, Jurusan : Biologi  PL/SQL procedure successfully completed. 

Contoh Program#2

Di bawah ini yakni pola jadwal penggunaan Nested Table pada PL/SQL:

DECLARE    CURSOR c_mahasiswa    IS       SELECT nama FROM mahasiswa;     TYPE c_list IS TABLE OF mahasiswa.nama%TYPE;     list_nama   c_list := c_list ();    counter     INTEGER := 0; BEGIN    FOR n IN c_mahasiswa    LOOP       counter := counter + 1;       list_nama.EXTEND;       list_nama (counter) := n.nama;       DBMS_OUTPUT.put_line (          'Mahasiswa(' || counter || '):' || list_nama (counter));    END LOOP; END; / 

Output:

Mahasiswa(1):Nursalim Alfarizi Mahasiswa(2):Nani Indriyani Mahasiswa(3):Desi Lisnawati  PL/SQL procedure successfully completed.