BAB V CURSOR AND RESULT SETS

dokumen-dokumen yang mirip
Pertemuan IV CONDITION & HANDLER CURSOR

Gambar Layar pertama untuk pemecahan masalah Lost Update

Modul 6 Function dan Trigger

STRUCTURE QUERY LANGUAGE (SQL)

Pertemuan VI F U N C T I O N

DATABASE RUMAH SAKIT 1. Objek yang dipakai a. Pasien b. Dokter c. Ruang d. Petugas e. Rawat_inap f. Pembayaran

Administrasi Basis Data. Transaksi dan Lock. Yoannita

PERTEMUAN 9 MANIPULASI DATA

Stored Procedure. M. Saefudin SKom, MMSI

Manajemen Transaksi. Praktikum Sistem Basis Data. Gentisya Tri Mardiani, S.Kom., M.Kom

M0564-Pengantar Sistem Basisdata 12/ 1

Transaction & Conccurency

S Q L. Sejarah SQL. Penulisan Perintah SQL. SQL (Structure Query Language)

TRIGGER TRIGGER 5/29/2017 HANI IRMAYANTI, S.KOM

Oracle Academic Initiative

B a s i s D a t a - 1 C H A P T E R. SQL Operasi DML. Copyright 2005 PENS-ITS

IMPLEMENTASI CONCURENCY CONTROL UNTUK APLIKASI MULTIUSER MENGGUNAKAN DATABASE SQL SERVER. Wiwi Widayani STMIK AMIKOM Yogyakarta

STORE PROCEDURE. Pemrograman Client Server Sarji, S.Kom Studi kasus pada

BAB 4 MEMBUAT LIST OF VALUE (LOV) DAN NON-BASE TABLE FIELDS

Kusnawi, S.Kom, M.Eng

Apakah SQL? Membuat basis data dan struktur tabel Input, update, dan delete data dari tabel Membuat query sederhana dan kompleks SQL

IMPLEMENTASI CONCURENCY CONTROL UNTUK APLIKASI MULTIUSER MENGGUNAKAN DATABASE SQL SERVER Wiwi Widayani

PRAKTIKUM BASIS DATA TERDISTRIBUSI MODUL 4 SINKRONISASI DATA

Modul 3 : Query Penggabungan Tabel

Pengenalan Database Management System MySQL. Pokok Bahasan: Pengenalan DataBase Pembangunan database berbasis Client-Server Dasar-Dasar MySQL

MUKADDIMAH TEORI ASUMSI TABEL. CREATE TABLE contoh ( kode CHAR(5), nama VARCHAR(50) )

BAB II DASAR TEORI. 2.1 Konsep Dasar Sistem Aplikasi Pengertian Sistem. Pengertian sistem adalah kumpulan dari elemen-elemen yang berinteraksi

Praktikum Basis Data. By. Rita Wiryasaputra, ST., M. Cs.

Membuat Function, Stored Procedur dan View pada MySQL

Praktikum Basis Data 2017 TE UM MODUL 8 TRIGGER A. TUJUAN

Mengenal MySQL Stored Procedure

Pengertian. Mengapa SP? Mengapa SP? 07/05/2012 STORED PROCEDURE

Transaction dan Trigger. M. Saefudin SKom, MMSI

B a s i s D a t a C H A P T E R. SQL Operasi DML. Arif Basofi PENS 2015

TUGAS I PRAKTIKUM SISTEM BASIS DATA. Nama: Krisna Pandu Wibowo( )

Basis Data 2. Procedure dan Function Database. Arif Basofi, S.Kom. MT. Teknik Informatika, PENS

@Tessy Badriyah, SKom. MT. PERTEMUAN 12 VIEW

MODUL 3. View PRAKTIKUM BASIS DATA LANJUT TEKNIK PERANGKAT LUNAK UNIVERSITAS PGRI RONGGOLAWE

Transaksi. by: Ahmad Syauqi Ahsan

Praktikum TRANSACT SQL. Tujuan : Praktikan mampu untuk mengerti dan memahami Transact-SQL

LAMPIRAN. 1) Membuat database baru untuk menampung data warehouse, yang bernama

Pertemuan IX MANAJEMEN TRANSAKSI

CONSTRAINT clients_client_num_pk PRIMARY KEY (client_number));

BAB VIII FUNGSI, PL/PGSQL dan TRIGER

Data Manipulation Language (DML)

MySQL Databases. Dasar-dasar MySQL dan Implementasi MySQL kedalam pemrograman PHP. Jakarta, 16 April 2011 Oleh: M. Awaludin, S.Kom

Modul Praktikum Sistem Basis Data 2010

TUJUAN. Memahami Koneksi dan Pemrosesan Basis Data di Java Memahami JDBC Menggunakan MySQL pada program Java

Pengertian Query. Query adalah perintah-perintah untuk mengakses data pada sistem basis data

MODUL 1 DATABASE MYSQL

MODUL 4. Query SELECT dan DML (INSERT, UPDATE, DELETE) PRAKTIKUM BASIS DATA LANJUT TEKNIK PERANGKAT LUNAK UNIVERSITAS PGRI RONGGOLAWE

Macam - Macam Perintah Pada SQL

PRAKTIKUM BASIS DATA TERDISTRIBUSI MODUL 4 SINKRONISASI DATA

Query adalah bahasa SQL (Structured Query Language) yang ditampilkan dalam bentuk visual, yang dapat digunakan untuk melihat, memodifikasi dan

TUGAS PRAKTIKUM SISTEM BASIS DATA

Untuk mencoba contoh-contoh perintah join, silahkan eksekusi query create+insert dibawah ini:

TABLE JOIN SQL SERVER 2005

Cursor. M. Saefudin SKom, MMSI

Stored Procedure (create, calling SP dari Oracle dan dari JAVA)

Contoh 3.1: Membuat suatu store procedure supaya menghapus semua pertandingan pemain berdasarkan nomor pemain yang ditentukan.

Stored Procedure (create, calling SP dari Oracle dan dari JAVA)

RENCANA PEMBELAJARAN

LAPORAN TUGAS Pemrograman Berbasis Java

Kontrak Kuliah. Stored Procedures and Function. Edi Sugiarto, S.Kom, M.Kom

MySQL J A M K E T I G A

S Q L STRUCTURED QUERY LANGUAGE DEFINITION MANIPULATION C O N T R O L D M L SELECT INSERT UPDATE DELETE

SISTEM BASIS DATA 2. WAHYU PRATAMA, S.Kom., MMSI.

SEKOLAH TINGGI MANAJEMEN INFORMATIKA & KOMPUTER JAKARTA STI&K SATUAN ACARA PERKULIAHAN

5/6/2010 KONSTRUK PROGRAM PL/SQL PROSEDUR STRUKTUR BLOK PADA BLOK ANONIM PL/SQL OVERVIEW MENGENAI SUBPROGRAM STRUKTUR BLOK PADA SUBPROGRAM PL/SQL

LAPORAN PRAKTIKUM MODUL 1 PENGENALAN MYSQL

Pertemuan VII TRIGGERS

BAB 6 PROGRAM UNITS DAN STRORED PROGRAMS UNITS

Persiapan Table Untuk Latihan Sebelum kita berkenalan lebih jauh dengan Trigger, mari kita buat terlebih dahulu, struktur table yang dibutuhkan.

3.1 Form Wizard. 3. Pilihlah menu use data block wizard dan tekanlah button OK, maka akan tampil window di bawah ini.

Pemrograman Berorientasi Obyek Lanjut (IT251) Ramos Somya, S.Kom., M.Cs.

Pertemuan I KONSEP DASAR STORED ROUTINES

Bab 5. Database Trigger POKOK BAHASAN: TUJUAN BELAJAR: 5.1. PENDAHULUAN

TUGAS PRAKTIKUM SISTEM BASIS DATA

SQL (Structure Query Language) Gentisya Tri Mardiani, S.Kom

STRUCTURE QUERY LANGUAGE DDL & DML

Perintah MySQL Lanjutan

TSI Perbankan MANAJEMEN DATA LOCK. Obyektif : 1. Mengetahui konsep lock 2. Mengetahui konsep share pada file database. AS/400 hal. B.

MODUL 2 PENGENALAN DATA DEFINITION LANGUAGE (DDL) & DATA MANIPULATION LANGUAGE (DML)

Pemrograman Web. Koneksi dan Manipulasi Basis Data. 7 Adam Hendra Brata

Untuk menjalankan Mysql secara konpensional jalankan Mysql.exe pada direktori Mysql\Bin. Akan tampak tampilan sebagai berikut:

MODUL 4 INTERNET PROGRAMMING DATABASE

SQL. Brigida Arie Minartiningtyas, M.Kom

Nama : Parisaktiana Fathonah NIM : Kelas : Prak Sistem Basis Data TI-2 B malam

PERTEMUAN 10 PEMBUATAN TABEL

Basis Data. Structured Query Language (SQL)

Menggunakan Set Operators

Widhy Hayuhardhika NP, S.Kom

Fakultas Teknologi Informasi

BAB 4 : Interaksi PL/SQL dengan Oracle Server

JDBC. Imam Fahrur Rozi

Agenda SQL. Pemakai SQL. Kemampuan SQL 02/12/2010 STRUCTURED QUERY LANGUAGE (SQL) Structured Query Language (SQL) (Pert. 9)

MODUL PRAKTIKUM 03 MENGENAL MEMBUAT TABEL

PHP dan MySQL. Mempelajari koneksi PHP. Fungsi-fungsi aksesnya. Muhammad Zen Samsono Hadi, ST. MSc

Pertemuan DDL INDIKATOR. Modul Teori Database Aknela

Basis Data II. Pertemuan Ke-9 dan ke-10 (Stored Procedure dan Trigger) Noor Ifada S1 T. Informatika - UTM (2012) 1

Transkripsi:

BAB V CURSOR AND RESULT SETS TUJUAN BELAJAR: - Menjelaskan tentang proses cursor - Menggunakan cursor dalam SP - Melakukan position delete dan position update - Mendeskripsikan jalannya cursor pada commit dan rollback - Menggunakan proses cursor untuk mengembalikan result sets pada sebuah aplkasi - Menjelaskan bagaimana cursor mempengaruhi locking Cursor memungkinkan sebuah aplikasi me-retrive beberapa baris dan kemudian memprosesnya menjadi beberapa baris dalam 1 waktu.ketika menggunakan sebuah cursor, program dapat mengambil setiap baris secara sequential dari result table sampai data terakhir.statement SELECT digunakan harus dalam statement DECLARE CURSOR. Statement DECLARE CURSOR menentukan dan menamai cursor, mengidentifikasi sekumpulan baris yang diambil(retrieved) dengan statement SELECT dari cursor. Result table diproses seperti sebuah data set yang berurutan. Cursor harus dibuka(dengan statement OPEN) sebelum baris lainnya di-retrieved. Statement FETCH digunakan untuk meretrieve baris terakhir cursor. FETCH dapat dijalankan berkali-kali sampai semua baris diretrieved. Ketika sudah sampai pada data terakhir, cursor harus ditutup dengan statement CLOSE. 5.1 CONTOH DEKLARASI CURSOR DECLARE c1 CURSOR FOR select * from staff; DECLARE c1 CURSOR WITH HOLD FOR select * form staff; DECLARE c1 CURSOR WITH RETURN TO CALLER FOR select * from staff; DECLARE c1 CURSOR WITH RETURN TO CLIENT FOR select * from staff; Cursor yang dideklarasikan di dalam Store Procedure dapat diproses seperti halnya cursor pada konvensional program.

WITH HOLD Mendeklarasikan cursor menggunakan WITH HOLD clause akan menyebabkan cursor mempertahankan posisinya dan beberapa lock melewati transaksi. Ketika cursor dideklarasikan dengan WITH HOLD, resource tidak dibebaskan pada saat COMMIT. Jika cursor tidak dideklarasikan dengan WITH HOLD clause, semua resource dibebaskan ketika COMMIT atau ROLLBACK. WITH RETURN clause ini mengindikasikan bahwa cursor yang dideklarasikan akan menghasilan result set. TO CALLER Merupakan default dan menetapkan bahwa cursor dapat mengembalikan result set ke pemanggil. Cotohnya, jika pemanggil adalah Store Procedure lain, result set dikembalikan ke store procedure tersebut. Jika pemanggil adalah aplikasi client, result set dikembalikan ke aplikasi client. Result set dari RETURN TO CALLER hanya tampak ke program yang terletak pada sebelum level bersarang. TO CLIENT Menetapkan bahwa cursor dapat mengembalikan result set ko aplikasi client. Cursor ini idak terlihat pada semua intermediate nested procedure. TO CALLER clause dan TO CLIENT clause berarti hanya pada konteks nested SQL procedure. Hanya saja row yang tidak terbaca dilewati. Contohnya, jika result set dari cursor adalah 500 row, dan 150 dari row tersebut telah dibaca oleh procedure ketika procedure diakhiri, row 151 sampai row 500 akan dikembalikan ke pemanggil atau aplikasi. 5.1.1 Cursor dalam sebuah SQL Procededure Cursor dapat didefinisikan di dalam stored procedure. Stored procedure DB2ADMIN.Sample1 menerima satu input parameter, in_dept. Sebuah Cursor cursor1 didefinisikan dan akan berisi sebuah barisdari table ORG dimana parameter input sama dengan DEPRNUMB. Result set yang dikembalikan oleh stored procedure akan berisi DEPTNUMB, MANAGER, dan LOCATION untuk DEPTNUMB yang sama dengan parameter in_dept.

CREATE PROCEDURE Sample1( IN in_dept INT ) RESULT SETS 1 LANGUAGE SQL ---------------------------------------------------------------- --SQL Stored Procedure ----------------------------------------- ---------------------------------------------------------------- DECLARE cursor1 CURSOR WITH RETURN FOR SELECT DEPTNAME, MANAGER, LOCATION FROM ORG WHERE DEPTNUMB = in_dept; ---- OPEN cursor1; 5.1.2 Contoh Cursor CREATE PROCEDURE Cur_Samp ( IN v_name VARCHAR(254), OUT v_job VARCHAR(5) ) LANGUAGE SQL DECLARE c1 CURSOR FOR SELECT JOB FROM STAFF WHERE NAME = v_name; OPEN c1; FETCH c1 INTO v_job; Contoh di atas merupakan stored procedure yang mendeklarasikan local cursor. Karena tidak ditentukan dengan WITH RETURN, cursor akan ditutup oleh database manager ketika store procedure selesai. Tanpa kode tambahan pada stored procedure, maka cursor tersebut tidak berguna. Contoh cursor di atas merupakan local cursor karena tidak ada WITH RETURN clause, dan tidak ada result set dibuat. Stored procedure tersebut menggunakan FETCH untuk proses cursor pada select sebuah job untuk user dengan

nama tertentu, dan mengembalikan nilai dari job ke program yang memanggil melalui parameter OUT. 5.2 POSITIONED DELETE Cursors dapat digunakan untuk menghapus data pada posisi cursor saat itu selama cursor deletable. Sebuah cursor dinyatakan deletable ketika : Setiap FROM clause dari outer fullselect me-refer hanya pada satu table. Outer fullselect tidak mengandung VALUES, GROUP BY, atau HAVING clause dan tidak mengandung fungsi kolom. Daftar select pada outer fullselect tidak mengandung DISTINCT. Select statement tidak mengandung ORDER BY atau FOR READ ONLY clause. Cursor didefinisikan secara statis, atau terdapat FO UPDATE clause. Ketika cursor dideklarasikan dapat dispesifikasikan operasi jenis apa yang akan dilakukan. Jika tidak menyediakan spesifikasi serupa, cursor di refer sebagai ambigu, dab DB2 hanya akan menyediakan optimisasi minor. Menentukan type cursor dengan menyediakan FOR READ ONLY atau FOR UPDATE clause dalam SELECT statement pada cursor. CREATEPROCEDURE pos_del() DYNAMICRESULTSETS 1 DECLARE v_deptnumb SMALLINT; DECLARE v_deptname VARCHAR(14); DECLARE v_location VARCHAR(13); DECLARE cursor1 CURSORFOR SELECT DEPTNUMB, DEPTNAME, LOCATION FROM DB2ADMIN.ORG FORUPDATE;-- OPEN cursor1;-- FETCHFROM cursor1 INTO v_deptnumb, V_DEPTNAME, v_location; DELETEFROM DB2ADMIN.ORG WHERECURRENTOF cursor1; CLOSE cursor1; 5.3 POSITIONED UPDATE Dalam sebuah positioned update, cursor harus updatable. cursor updatable jika semua pernyataan berikut benar : cursormerupakan deletable. Kolong yang diupdate berubah pada kolom pada table asal

Semua kolom yang diupdate harus ditentukan secara explisit atau implisit dalam FOR UPDATE clause. CREATEPROCEDURE pos_upd() DYNAMICRESULTSETS 1 DECLARE v_deptnumb SMALLINT; DECLARE v_deptname VARCHAR(14); DECLARE v_location VARCHAR(13); DECLARE cursor1 CURSORFOR SELECT DEPTNUMB, DEPTNAME, LOCATION FROM DB2ADMIN.ORG FORUPDATEOF DEPTNAME;-- OPEN cursor1; FETCHFROM cursor1 INTO v_deptnumb, V_DEPTNAME, v_location; UPDATE ORG SET DEPTNAME = 'NEW NAME' WHERECURRENTOF cursor1; 5.4 MENGGUNAKAN PROSES CURSOR UNTUK MENGEMBALIKAN MULTIPLE RESULT SETS Stored procedures dibuat untuk mengembalikan multiple result sets pada aplikasi client (pemanggil) memerlukan : AdanyaDYNAMIC RESULT SETS clause pada CREATE PROCEDURE statement. Mendeklarasikan cursor untuk setiap result set dengan RETURN. Meninggalkan semua cursor terbuka untuk mengambalikan result set ke aplikasi client (pemanggil).

CREATEPROCEDURE MULTIPLE_RESULTS ( ) DYNAMICRESULTSETS 2 ---------------------------------------------------------------- ----------SQL Stored Procedure --------------------------------- --------------------------------------------------------------- --Declare cursors1 DECLARE cursor1 CURSORWITHRETURNFOR SELECT DEPTNAME FROM ORG; --Declare cursors2 DECLARE cursor2 CURSORWITHRETURNFOR SELECTDISTINCT DIVISION FROM ORG; --Cursor left open for client application OPEN cursor1; --Cursor left open for client application OPEN cursor2; 5.5 CURSOR MEMPENGARUHI LOCKING Lock Modes: S(Share) Lock Rows, tables o Pemilik dan aplikasi yang bersamaan dapat membaca, tidak meng-update. U(Update) Lock Rows, tables o Pemilik dapat meng-update. Aplikasi yang bersamaan dapat membaca data dalam objek yang dikunci, tidak meng-update. X(Exclusive) Lock Rows, tables o Pemilik dapat membaca dan meng-update. Aplikasi uncommitted read yang bersamaan dapat membaca data dalam objek yang terkunci.

Cursor dalam stored procedure dapat mempengaruhi aplikasi lain yang mengakses objek yang sama. Ketika table diakses, DB2 meletakkan lock pada table dan/atau row. Lock merubah keadaan dari yang akan mencegah siapapun membaca data dalam table untuk sebuah row lock terakhir selama membaca row tersebut. Type lock yang digunakan DB2 bergantung pada type cursor yang digunakan dan DB2 isolation level. 5.6 ISOLATION LEVEL Uncommitted Read (UR) Dirty Read: Mengabaikan semua kunci pada baris dan table, mengijinkan aplikasi untuk membaca uncommitted data. Cursor Stability (CS) Default (maximum concurrency): Menjaga current row dari pembacaan atau update dari perubahan oleh aplikasi lain. Read Stability (RS) RS isolation mengijinkan aplikasi untuk membaca pages yang sama atau baris lebih dari satu kali ketika mencegah proses lain dari mengubah row. Repeatable Read (RR) Baris yang di-refer sebuah aplikasi tidak dapat diupdate oleh aplikasi lain sebelum aplikasi tersebut mencapai commit poin.

LATIHAN 1. Buatlah tabel pegawai yang memiliki struktur seperti tabel employee. kemudian buat prosedur dengan nama multiple_4digitnimbelakang dengan ketentuan : prosedur terdiri dari 2 result sets buat cursor untuk memasukkan data dari tabel employee ke tabel pegawai (gunakan perulangan while atau loop) result set 1 menampilkan pesan berhasil insert result set 2 menampilkan semua data pegawai 2. Buatlah prosedur yang berfungsi untuk mengupdate salary pegawai tertentu dengan menggunakan cursor kemudian tampilkan hasilnya dengan multiple result sets