PL/SQL Program Studi D3 Teknik Informatika -Fakultas Ilmu Terapan.

Slides:



Advertisements
Presentasi serupa
Error Handling (Exception) & INDEX
Advertisements

MYSQL.
Database Create-Retrieve-Update-Delete (CRUD)
Dikompilasi Oleh : Ary Bima Kurniawan ST., MT.
Tipe data dan algoritma dasar
PL/SQL - LANJUTAN PERULANGAN KONDISI.
Transact-SQL Disampaikan oleh: Agus Wahyu Widodo, ST
DML Lanjutan Pertemuan Minggu Ke-10.
Pengantar Teknologi Mobile 8
TRIGGER.
Stored Procedure Basis Data Terapan.
Triggers & Stored Procedure The main reference of this presentation is from book: Peter Rob, Carlos Coronel, “Database systems: Design, Implementation.
Oracle : Form/Report Developer
PL/SQL PROGRAMMING PL/SQL adalah prosedur berkelanjutan dari Oracle -SQL yang menawarkan satu bentuk bahasa pemrograman. PL/SQL memungkinkan user atau.
Pemprograman Terstruktur 1
STORED PROCEDURE Achmad Yasid, SKom.
Dikompilasi Oleh : Ary Bima Kurniawan ST., MT.
TRIGGER.
PEMROGRAMAN IMPERATIF
REPETITION CONTROL STRUCTURES
CURSORS Nama kelompok 10 Rizka Annisa
Triggers & Stored Procedure The main reference of this presentation is from book: Peter Rob, Carlos Coronel, “Database systems: Design, Implementation.
Tabled Value Parameter. Tabled Value Parameter merupakan tipe data yang dibuat oleh user Tabled Value Parameter digunakan untuk mengirimkan multiple rows.
BASIS DATA TERAPAN Pertemuan 2.
Data Types Data Definition Language Referential Constraint SQL Query
Oracle : Form/Report Developer
Dikompilasi Oleh : Ary Bima Kurniawan ST., MT.
Pertemuan : 10 Basis Data Terapan
OPERATOR DAN FUNGSI MATEMATIK. Operator  Assignment operator Assignment operator (operator pengerjaan) menggunakan simbol titik dua diikuti oleh tanda.
Cursor MI2163 Dasar Pemrograman Basis Data. Introduction Cursor merupakan suatu variabel yang digunakan untuk menampung hasil query yang terdiri atas.
Materi Kuliah 1. Pertemuan ke : 1 Pengenalan Komputer dan Pemrograman
HANDLING EXCEPTIONS.
Disampaikan Oleh : Wiratmoko Yuwono
Algoritma Pemrograman 2A
Dikompilasi Oleh : Ary Bima Kurniawan ST., MT.
Dikompilasi Oleh : Ary Bima Kurniawan ST., MT.
C U R S O R.
Exception Handling: Non Predefined Exception
Stored Function Tanpa Parameter
PENJURUSAN DI ORACLE ORACLE DEVELOPER
DEKLARASI VARIABEL DALAM PL/SQL
Dasar-Dasar Pemrograman
Visual Basic.NET – Flow Control Statement
STORED PROCEDURE & TRIGGER
SQL.
SQL (Structure Query Language)
Pengolahan Informasi Berbasis Bahasa Pemrograman Script
Praktikum Berkas dan Basis Data
TRIGGER.
LINGKUNGAN TURBO PASCAL
Blok PL/SQL Non Modular dan Modular
“Array, Procedure dan Function”
Pemrograman Web Lanjut “Pertemuan ke-3”
Dasar-Dasar Pemrograman
Anonymous Blok PL/SQL dan Tipe Data
Stored Procedure Tanpa Parameter
PERULANGAN.
PEMROGRAMAN PASCAL ELEMEN PEMROGRAMAN PASCAL.
Stored Function Dengan Parameter
Dikompilasi Oleh : Ary Bima Kurniawan ST., MT.
PROCEDURE, FUCTION, ARRAY
Dikompilasi Oleh : Ary Bima Kurniawan ST., MT.
STRUKTUR DATA.
CURSOR.
Dikompilasi Oleh : Ary Bima Kurniawan ST., MT.
Pemrogram 1 Agus Darmawan, S.kom.
Basis Data Bab 3 Structured Query Language (SQL).
Dikompilasi Oleh : Ary Bima Kurniawan ST., MT.
ORACLE PL/SQL TRIGGER Program Studi D3 Teknik Informatika -Fakultas Ilmu Terapan.
PL/SQL CURSOR Program Studi D3 Teknik Informatika -Fakultas Ilmu Terapan.
Transcript presentasi:

PL/SQL Program Studi D3 Teknik Informatika -Fakultas Ilmu Terapan

REFERENSI Abraham Silberscahatz, Henry F. Korth. Database System Concepts. McGraw-Hill Raghu Ramakrisnan, Gherke. Database Management System. McGraw-Hill Greenberg, N. (Edition 1.1 August 2004). Oracle Database 10g: SQL Fundamental I. Jobi Varghese – BAB 6

Pengenalan PL/SQL PL/SQL: • Kepanjangan dari Procedural Language extension to SQL • Merupakan gabungan dari struktur prosedural dengan SQL Terdiri dari beberapa bagian, yaitu DECLARE(optinal), BEGIN(mandatory), EXCEPTION(optional), END(mandatory). Menerangkan tentang arti PL/SQL

Tipe Blok PL/SQL Block Types A PL/SQL program comprises one or more blocks. These blocks can be entirely separate or nested within another. There are three types of blocks that make up a PL/SQL program. They are: • Anonymous blocks • Procedures • Functions

Anonymous Block Ciri-cirinya: Blok tidak mempunyai nama Tidak disimpan dalam database Setiap akan mengeksekusi, harus dicompile dulu Anonymous blocks: Anonymous blocks are unnamed blocks. They are declared inline at the point in an application where they are to be executed and are compiled each time the application is executed. These blocks are not stored in the database. They are passed to the PL/SQL engine for execution at run time. Triggers in Oracle Developer components consist of such blocks. These anonymous blocks get executed at run time because they are inline. If you want to execute the same block again, you have to rewrite the block. You will not be able to invoke or call the block that you wrote earlier because blocks are anonymous and do not exist after they are executed.

Contoh Anonymous Block Variabel substitusi Terangkan tiap bagian: DECLARE: untuk mendeklarasi variabel BEGIN-END: berisi statement EXCEPTION: untuk menangani error Variabel substitusi untuk menginputkan data dari layar.

STRUKTUR BLOK PL/SQL DECLARE BEGIN END; / a INT; b INT; c NUMBER; c := a + b - a / b * a; DBMS_OUTPUT.PUT_LINE('Hasilnya = '||c||' dolar'); END; /

Eksekusi PL/SQL SET SERVEROUTPUT ON Hanya di eksekusi 1 kali setiap sesi

Identifier (Penamaan Variabel) Harus dimulai dengan huruf Dapat terdiri dari kombinasi angka dan huruf Dapat mengandung karakter $ _ # Tidak lebih dari 30 karekter Tidak boleh menggunakan reserved words

Tipe Variabel Skalar Composite Reference Large Objects (LOB) Menampung nilai tunggal. Nilai tergantung pada tipe data. Menampung variabel Boolean. Contoh: Varchar2 hanya menampung data berupa string Composite Mengandung elemen tunggal yang berupa skalar atau gabungan. Contoh : Record dan tabel adalah contoh tipe data gabungan. Reference Menampung nilai-nilai, memanggil pointer, yang mana pointer itu ke lokasi penyimpanan. Large Objects (LOB) Menampung nilai, memanggil lokasi, yang merinci lokasi LOB (seperti grafik) yang disimpan pada line. Bind Variables/Substitution Variables memasukkan variabel yang dideklarasikan pada precompiler program, screen fields di form aplikasi dan variabel iSQL *Plus.

TIPE DATA Tipe Data Skalar Tipe Data Komposit

Tipe Data Skalar CHAR -> maksimal ? VARCHAR -> maksimal ? NUMBER -> maksimal ? DATE -> format ? BOOLEAN -> berapa kondisi ?

PL/SQL - VARCHAR DECLARE BEGIN END; / Pesan VARCHAR2(18); Pesan := ‘Belajar PL/SQL’; DBMS_OUTPUT.PUT_LINE(Pesan); END; /

Tipe Data Komposit Record %TYPE --Skalar %ROWTYPE

%TYPE Merepresentasikan tipe data sebuah field nama_variabel nama_tabel.nama_field%TYPE; Var1 TMahasiswa.NIM%TYPE; Var2 TMahasiswa.NAMA%TYPE;

%ROWTYPE Merepresentasikan tipe data satu record dari sebuah cursor nama_variabel nama_cursor%ROWTYPE; Var3 C_Mahasiswa%ROWTYPE;

Record Memiliki lebih dari satu elemen Merupakan deretan baris yang saling berhubungan PL/SQL records : Table-based Cursor-based Programmer-defined / User-defined

Table-Based Records Table-based record pada tabel mahasiswa DECLARE mhs_rec mahasiswa%ROWTYPE; BEGIN SELECT * INTO mhs_rec FROM mahasiswa WHERE nim=3031001; DBMS_OUTPUT.PUT_LINE (mhs_rec.nim); DBMS_OUTPUT.PUT_LINE (mhs_rec.nama); END; /

Cursor-Based Record Cursor-based record pada tabel mahasiswa DECLARE CURSOR c_mhs IS SELECT nim, nama FROM mahasiswa; mhs_rec c_mhs%ROWTYPE; BEGIN OPEN c_mhs; LOOP FETCH c_mhs INTO mhs_rec; EXIT WHEN c_mhs%NOTFOUND; DBMS_OUTPUT.PUT_LINE (mhs_rec.nim||’ ‘||mhs_rec.nama); END LOOP; CLOSE c_mhs; END; /

User-Defined Record User-defined record pada tabel mahasiswa DECLARE TYPE mhs_type IS RECORD ( v_nim mahasiswa.nim%TYPE, v_nama mahasiswa.nama%TYPE); mhs_rec mhs_type; BEGIN SELECT nim, nama INTO mhs_rec FROM mahasiswa WHERE nim=3031001; DBMS_OUTPUT.PUT_LINE (mhs_rec.v_nim); DBMS_OUTPUT.PUT_LINE (mhs_rec.v_nama); END; /

PL/SQL TABLE (ARRAY) DECLARE       TYPE tipe_arr_nilai IS TABLE OF NUMBER INDEX BY BINARY_INTEGER; arr_nilai tipe_arr_nilai; total NUMBER; BEGIN       arr_nilai(1) := 1000;       arr_nilai(2) := 2000; arr_nilai(3) := 3000; total := arr_nilai(1) + arr_nilai(2) + arr_nilai(3); DBMS_OUTPUT.PUT_LINE (total); END; /

PERCABANGAN IF CASE

IF Statements IF kondisi THEN [ELSIF kondisi2 THEN [ELSE END IF; Pernyataan; [ELSIF kondisi2 THEN Pernyataan2;] [ELSE Pernyataan3;] END IF;

Contoh IF DECLARE BEGIN END; / Var1 NUMBER; Hasil VARCHAR2(16); IF Var1 >= 70 THEN Hasil := ‘Lulus’; END IF; DBMS_OUTPUT.PUT_LINE (Hasil); END; /

Contoh IF..ELSE DECLARE BEGIN END; / Var1 NUMBER; Hasil VARCHAR2(16); IF Var1 >= 70 THEN Hasil := ‘Lulus’; ELSE Hasil := ‘Gagal’; END IF; DBMS_OUTPUT.PUT_LINE (Hasil); END; /

Contoh IF..ELSIF..ELSE DECLARE BEGIN END; / Var1 NUMBER; Hasil VARCHAR2(16); BEGIN Var1 := 60; IF Var1 >= 70 THEN Hasil := ‘Lulus’; ELSIF Var1 >=60 AND Var1<70 THEN Hasil := ‘Hampir Lulus’; ELSE Hasil := ‘Gagal’; END IF; DBMS_OUTPUT.PUT_LINE (Hasil); END; /

CASE Expressions CASE variabel_pilihan END; / WHEN pilihan1 THEN hasil1 WHEN pilihan2 THEN hasil2 … [ELSE hasilN] END; /

Contoh CASE DECLARE BEGIN END; / Var1 NUMBER; Hasil VARCHAR2(16); WHEN Var1>=70 THEN Hasil := ‘Lulus’; WHEN Var1>=60 AND Var1<70 THEN Hasil := ‘Hampir Lulus’; ELSE Hasil := ‘Gagal’; END CASE; DBMS_OUTPUT.PUT_LINE (Hasil); END; /

PERULANGAN LOOP FOR WHILE

LOOP LOOP Statement-statement; EXIT WHEN Kondisi; END LOOP;

LOOP DECLARE BEGIN END; Jumlah NUMBER; Jumlah := 0; LOOP END LOOP; Jumlah := Jumlah +1; DBMS_OUTPUT.PUT_LINE (Jumlah); EXIT WHEN Jumlah=10; END LOOP; END;

FOR FOR Var IN [REVERSE] indeks_min..indeks_max LOOP END LOOP; Statement-statement; END LOOP;

FOR DECLARE BEGIN END; Jumlah NUMBER; Jumlah := 10; FOR i IN 1..Jumlah LOOP DBMS_OUTPUT.PUT_LINE (i); END LOOP; END;

FOR DECLARE BEGIN END; Jumlah NUMBER; Jumlah := 10; FOR i IN REVERSE 1..Jumlah LOOP DBMS_OUTPUT.PUT_LINE (i); END LOOP; END;

WHILE WHILE kondisi LOOP Statement-statement; END LOOP;

WHILE DECLARE BEGIN END; Jumlah NUMBER; Jumlah := 1; WHILE Jumlah < 10 LOOP DBMS_OUTPUT.PUT_LINE (Jumlah); Jumlah := Jumlah+1; END LOOP; END;

LABEL DAN GO TO Abraham Silberscahatz, Henry F. Korth. Database System Concepts. McGraw-Hill Raghu Ramakrisnan, Gherke. Database Management System. McGraw-Hill Greenberg, N. (Edition 1.1 August 2004). Oracle Database 10g: SQL Fundamental I. Jobi Varghese – BAB 6

EXCEPTION HANDLING Setiap kesalahan (error) atau peringatan (warning) yang muncul karena suatu perintah disebut sebagai exception

STRUKTUR EXCEPTION EXCEPTION WHEN exception_1 [OR exception_2 [OR ...]] THEN statemen-statemen; WHEN exception_a [OR exception_b [OR ...]] THEN WHEN OTHERS THEN

TIPE EXCEPTION Predefined Exception User Defined Exception Non-Predefined Exception

PREDEFINED EXCEPTION Exception bawaan dari database Menampilkan pesan kesalahan secara otomatis dengan kode-kode tertentu

PREDEFINED EXCEPTION DECLARE BEGIN END; Var1 NUMBER; Var2 VARCHAR2(30); BEGIN SELECT nim, nama into Var1, Var2 from TMahasiswa WHERE UPPER(nama) LIKE ‘%’||UPPER(‘an’); DBMS_OUTPUT.PUT_LINE (Var1||’ ‘||Var2); EXCEPTION WHEN NO_DATA_FOUND THEN DBMS_OUTPUT.PUT_LINE (‘Data tidak ditemukan’); WHEN TOO_MANY_ROWS THEN DBMS_OUTPUT.PUT_LINE (‘Lebih dari satu data ditemukan’); END;

USER DEFINED EXCEPTION Dideklarasikan seperti Variabel nama_exception EXCEPTION; Pemanggilan dengan menggunakan RAISE RAISE nama_exception;

USER DEFINED EXCEPTION DECLARE e_pesan EXCEPTION; BEGIN UPDATE TMahasiswa SET nama = ‘Abdul’ WHERE nim = 1009; IF SQL%NOTFOUND THEN RAISE e_pesan; END IF; COMMIT; EXCEPTION WHEN e_pesan THEN DBMS_OUTPUT.PUT_LINE (‘Data tidak ditemukan’); END;

NON-PREDEFINED EXCEPTION Termasuk User Defined Exception nama_exception EXCEPTION; PRAGMA EXCEPTION_INIT (nama_exception,nomor_error);

NON-PREDEFINED EXCEPTION DECLARE e_pesan EXCEPTION; PRAGMA EXCEPTION_INIT(e_pesan, -2291); BEGIN INSERT INTO TMahasiswa VALUES (1009, ‘Abdul’, ‘Bandung1’); COMMIT; EXCEPTION WHEN e_pesan THEN DBMS_OUTPUT.PUT_LINE (‘Error ditemukan’); END;

SELESAI