Stored Procedures, Function, Trigger, Dynamic SQL, Cursor. Introduction SMART DATABASE

dokumen-dokumen yang mirip
Cursor. M. Saefudin SKom, MMSI

Transact-SQL (Trigger- Event, Store Procedure)

Implementasi migrasi database didasarkan pada kebutuhan untuk memindahkan

Modul 6 Function dan Trigger

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

Pertemuan VI F U N C T I O N

DBMS: SQL Server Transact SQL

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

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

TRIGGER. Tujuan Mata Kuliah. Tools yang digunakan. Sesi7 : TRIGGER. Praktikum Pemrograman Client Server Database Hadi Kusumah, S.T.

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

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

PRAKTIKUM BASIS DATA TERDISTRIBUSI MODUL 4 SINKRONISASI DATA

Pertemuan IV CONDITION & HANDLER CURSOR

Computer Science, University of Brawijaya. Putra Pandu Adikara, S.Kom VIEW & TABLE. Basis Data 2

Pertemuan VII TRIGGERS

Computer Science, University of Brawijaya. Putra Pandu Adikara, S.Kom. Trigger. Basis Data 2

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

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

Oracle Academic Initiative

Mengenal MySQL Stored Procedure

PRAKTIKUM PL/SQL (Trigger) OLEH : WIRATMOKO YUWONO, ST

Stored Procedure. M. Saefudin SKom, MMSI

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

BAB 6 PROGRAM UNITS DAN STRORED PROGRAMS UNITS

CONSTRAINT clients_client_num_pk PRIMARY KEY (client_number));

Bab 3. Query Lanjutan POKOK BAHASAN: TUJUAN BELAJAR:

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

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

STRUCTURE QUERY LANGUAGE (SQL)

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

PRAKTIKUM BASIS DATA TERDISTRIBUSI MODUL 4 SINKRONISASI DATA

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

Contoh SQL Constraint

PENGANTAR TEKNOLOGI SISTEM INFORMASI MANAGEMENT 2

Basis Data. Bagian IV SQL (3) Fak. Teknik Jurusan Teknik Informatika Universitas Pasundan

PL / SQL. Arif Basofi

LAMPIRAN. 2) Membuat tabel-tabel dimensi dan fakta yang sesuai dengan skema bintang yang. if exists (select * from dbo.sysobjects where id = object_id

BAB VIII FUNGSI, PL/PGSQL dan TRIGER

Data Manipulation Language (DML)

Schema Objects. MI2154 SQL LANJUT Dedy Rahman Wijaya, S.T., M.T., OCA

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

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

MODUL 1 DATABASE MYSQL

TABLE JOIN SQL SERVER 2005

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

Membuat Function, Stored Procedur dan View pada MySQL

IMPLEMENTASI TRIGGER, STORED PROCEDURE, FUNCTION DAN VIEW PADA MYSQL DALAM PERANCANGAN SYSTEM INVENTORY CAFFE BOULEVARD JAYAPURA

LAPORAN TUGAS Pemrograman Berbasis Java

Pertemuan I KONSEP DASAR STORED ROUTINES

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

Praktikum Basis Data 14 Structure Query Language 2

Perangkat Lunak Pengembangan Web

Oracle Academic Initiative

Oracle Academic Initiative

STRUCTURE QUERY LANGUAGE DDL & DML

BAB III STRUCTURED QUERY LANGUAGE (SQL)

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

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

Modul 3. Oleh : Mohammad Sholikin. 1

BAB 4 : Interaksi PL/SQL dengan Oracle Server

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

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

Sejarah(1) Sejarah(2) STRUCTURE QUERY LANGUANGE (1) Definisi SQL

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

VIEW OR STORED PROCEDURE

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

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

Pertemuan V FLOW CONTROL

Oracle Academic Initiative

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

Syntax Syntax SQL. Untuk lebih jelasnya dapat dilihat sebagai berikut : 1. DDL (Definition Data Language) a. CREATE

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

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

Modul Pembangunan Aplikasi Basis Data Lanjut 2014

Tahap Instalasi PostgreSQL di Windows

MODUL PRAKTIKUM 04. Database Implementation dengan Perintah SQL

Oracle Academic Initiative

BAB II PEMBUATAN DAN MANAJEMEN TABLE

LAMPIRAN. /****** Object: Table [dbo].[dimensiactionoffice] Script Date: 01/21/2011

Sistem Basis Data Danny Kriestanto, S.Kom., M.Eng


Basis Data Relational

Pertemuan 10. Bahasa Query Terapan

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

Kontrak Kuliah. Trigger dan Scheduled Events. Edi Sugiarto, S.Kom, M.Kom

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

SUBQUERY-2. MI2154 SQL LANJUT Dedy Rahman Wijaya, S.T., M.T., OCA

Oracle Academic Initiative

Pengenalan PL/SQL. Pertemuan 3

BAB V CURSOR AND RESULT SETS

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

MODUL PRAKTIKUM BASIS DATA FAKULTAS ILMU KOMPUTER UNIVERSITAS ESA UNGGUL

Basis Data. DDL & Aturan Referential

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

Data Manipulation Language (DML) & Data Control Language (DCL) pada Database

STRUCTURE QUERY LANGUAGE

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

Transkripsi:

Stored Procedures, Function, Trigger, Dynamic SQL, Cursor Introduction SMART DATABASE

Apa Itu Smart Database?? Database yang menyimpan bisnis logic Database yang konsisten Database yang smart Database yang bukan hanya sekedar menyimpan data, tetapi dapat menjalankan bisnis logic dan dapat menjaga konsistensi data, sehingga dapat bekerja sebagai database yang smart

3-Tier Architecture

Object-Object Smart Database Stored Procedures Function Trigger Dynamic SQL Cursor

Apakah STORED PROCEDURES itu? STORED PROCEDURES Perintah SQL yang disimpan pada Database

a. Eksekusi yang sudah dikompilasi. b. Mengurangi trafik client/server. c. Efisiensi penggunaan code dan abtraksi pemrograman. d. Meningkatkan control keamanan pengguna. Keuntungan Menggunakan STORED PROCEDURES

Stored Procedures Syntax CREATE PROC[EDURE][schema.] procedure [ { @parameter [schema.] data_type } [VARYING ] [ = default ] [ OUT[PUT] ] ] [,...n ] [WITH Option [,...n ]] AS { sql_statement [;][...n ] EXTERNAL NAME assembly.class.method } [;] ALTER PROCEDURE EXEC Execute Procedure DROP PROCEDURE

STORED PROCEDURES Samples (1) CREATE PROCEDURE [dbo].[getproducts] AS SELECT ProductID, ProductName FROM Products EXEC GetProducts

STORED PROCEDURES Samples (2) CREATE PROCEDURE OrderSummary @MaxQuantity INT OUTPUT AS SELECT Ord.EmployeeID, SummSales = SUM(OrDet.UnitPrice * OrDet.Quantity) FROM Orders AS Ord JOIN [Order Details] AS OrDet ON (Ord.OrderID = OrDet.OrderID) GROUP BY Ord.EmployeeID ORDER BY Ord.EmployeeID SELECT @MaxQuantity = MAX(Quantity) FROM [Order Details] RETURN (SELECT SUM(Quantity) FROM [Order Details])

STORED PROCEDURES Samples (2) DECLARE @OrderSum INT DECLARE @LargestOrder INT EXEC @OrderSum = OrderSummary @MaxQuantity = @LargestOrder OUTPUT PRINT 'The size of the largest single order was: ' + CONVERT(CHAR(6), @LargestOrder) PRINT 'The sum of the quantities ordered was: ' + CONVERT(CHAR(6), @OrderSum)

STORED PROCEDURES Samples (3) CREATE PROCEDURE CustomerOrder @CustID nvarchar(5) AS SELECT orderid,customerid,orderdate FROM Orders WHERE CustomerID=@CustID EXEC CustomerOrder @CustID='WILMK'

Apakah FUNCTION itu? FUNCTION Kumpulan query yang disimpan menjadi satu

a. Penggunaan kembali code, sehingga mengurangi waktu pembuatan. b. Menyembunyikan detail SQL. c. Tersentralisasi, sehingga memudahkan jika bisnis logic mengalami perubahan. Keuntungan Menggunakan FUNCTION

Function adalah subprogram yang harus mengembalikan nilai (menggunakan keyword RETURN) Function digunakan pada perintah SELECT, tetapi stored procedures tidak dapat digunakan didalam perintah SELECT. Function hanya mempunyai parameter IN, sedangkan stored procedures dapat terdiri atas parameter OUT atau INOUT Perbedaan STORED PROCEDURES dan FUNCTION Stored Procedure dapat mengembalikan banyak nilai menggunakan parameter OUT, atau tidak mengembalikan nilai sama sekali.

Function Syntax CREATE FUNCTION [schema.] function ( [@parameter [ AS ][type_schema.] parameter_data_type [= default ] [,...n ] ]) RETURNS return_clause... [;] ALTER FUNCTION DROP FUNCTION

Ada 3 tipe User-Defined Functions : 1. Scalar 2. Inline Table-Valued 3. Multi-Statement Table-Valued Tipe Function

FUNCTION Samples (1) - Scalar CREATE FUNCTION WhichContinent (@Country nvarchar(15)) RETURNS varchar(30) AS BEGIN declare @Return varchar(30) select @Return = case @Country when 'Argentina' then 'South America' when 'Belgium' then 'Europe' when 'Brazil' then 'South America' when 'Canada' then 'North America' when 'Denmark' then 'Europe' when 'Finland' then 'Europe' when 'France' then 'Europe' else 'Unknown' end return @Return END

FUNCTION Samples (1) - Scalar PRINT dbo.whichcontinent('usa') SELECT dbo.whichcontinent(customers.country), customers.* FROM customers

FUNCTION Samples (2) Inline Table Valued CREATE FUNCTION CustomersByContinent (@Continent varchar(30)) RETURNS TABLE AS RETURN SELECT dbo.whichcontinent(customers.country) as continent, customers.* FROM customers WHERE dbo.whichcontinent(customers.country) = @Continent

FUNCTION Samples (2) Inline Table Valued SELECT * FROM CustomersbyContinent('North America') SELECT * FROM CustomersByContinent('South America') SELECT * FROM CustomersbyContinent('Unknown')

FUNCTION Samples (3) Multi Statement Table Valued CREATE FUNCTION dbo.customersbycountry( @Country varchar(15) ) RETURNS @CustomersbyCountryTab table ( [CustomerID] [nchar] (5), [CompanyName] [nvarchar] (40), [ContactName] [nvarchar] (30), [ContactTitle] [nvarchar] (30), [Address] [nvarchar] (60), [City] [nvarchar] (15), [PostalCode] [nvarchar] (10), [Country] [nvarchar] (15), [Phone] [nvarchar] (24), [Fax] [nvarchar] (24) ) AS BEGIN

FUNCTION Samples (3) Multi Statement Table Valued INSERT INTO @CustomersByCountryTab SELECT [CustomerID], [CompanyName], [ContactName], [ContactTitle], [Address], [City], [PostalCode], [Country], [Phone], [Fax] FROM [Northwind].[dbo].[Customers] WHERE country = @Country

FUNCTION Samples (3) Multi Statement Table Valued DECLARE @cnt INT SELECT @cnt = COUNT(*) FROM @customersbycountrytab IF @cnt = 0 INSERT INTO @CustomersByCountryTab ( [CustomerID], [CompanyName], [ContactName], [ContactTitle], [Address], [City], [PostalCode], [Country], [Phone], [Fax] ) VALUES ('','No Companies Found','','','','','','','','') RETURN END

FUNCTION Samples (3) Multi Statement Table Valued SELECT * FROM dbo.customersbycountry('usa') SELECT * FROM dbo.customersbycountry('canada') SELECT * FROM dbo.customersbycountry('adf')

Apakah TRIGGER itu? TRIGGER Sekumpulan perintah yang secara otomatis dijalankan apabila data didalam tabel berubah karena perintah SQL (insert, update, delete)

a. Melakukan update data otomatis ketika terjadi perubahan b. Mengimplementasikan sistem log. c. Validasi dan verifikasi data sebelum data tersebut tersimpan. Keuntungan Menggunakan TRIGGER

Timing Trigger FOR / AFTER, trigger dijalankan setelah DML Event pada tabel. INSTEAD OF, trigger dijalankan sebelum DML Event pada tabel. INSTEAD OF dapat dijalankan pada sebuah view. Event Trigger INSERT, trigger dijalankan pada saat melakukan penambahan data. UPDATE, trigger dijalankan pada saat melakukan update data. DELETE, trigger dijalankan pada saat data dihapus.

TRIGGER Samples (1) CREATE TABLE dbo.audittrail ( AuditTrailID Int IDENTITY (1, 1) NOT NULL, TableName VarChar (50) NOT NULL, ActionTaken Char (1) NOT NULL, ActionUser VarChar (50) NOT NULL, ActionDate DateTime NOT NULL ) ON [PRIMARY] Column Datatype NULL AuditTrailID Identity Not allowed TableName VarChar(50) Not allowed ActionTaken Char(1) Not allowed ActionUser VarChar(50) Not Allowed ActionDate DateTime Not Allowed

TRIGGER Samples (1) CREATE TRIGGER [AuditInsertUpdate] ON dbo.products FOR INSERT, UPDATE AS INSERT INTO AuditTrail (TableName, ActionTaken, ActionUser, ActionDate) VALUES ('Products', 'I', User_Name(), GetDate()) CREATE TRIGGER [AuditDelete] ON dbo.products FOR DELETE AS INSERT INTO AuditTrail (TableName, ActionTaken, ActionUser, ActionDate) VALUES ('Products', 'D', User_Name(), GetDate())

TRIGGER Samples (1) UPDATE dbo.products SET UnitPrice = 1 WHERE ProductID = 1 SELECT * FROM dbo.audittrail

TRIGGER Samples (2) CREATE TABLE [dbo].[triggertest] ([au_id] [int] NULL, [au_name] [varchar] (50)) CREATE TRIGGER tr_insertconcatname ON employees FOR INSERT AS DECLARE @EmpID INT DECLARE @ConcatName VARCHAR(50) SELECT @EmpID = (SELECT EmployeeID FROM Inserted) SELECT @ConcatName = (SELECT LastName + ', ' + FirstName FROM Inserted) INSERT TriggerTest VALUES (@EmpID,@ConcatName) INSERT employees (employeeid, lastname, firstname, title) VALUES (10,'Woody', 'Buck', Sales Manager )

TRIGGER Samples (2) CREATE TRIGGER tr_updateconcatname ON employees FOR UPDATE AS DECLARE @EmpID INT DECLARE @NewConcatName VARCHAR(50) SELECT @EmpID = (SELECT EmployeeID FROM Inserted) SELECT @NewConcatName = (SELECT Lastname + ', ' + Firstname FROM Inserted) UPDATE TriggerTest SET au_name = @NewConcatName WHERE au_id = @EmpID UPDATE employees SET firstname = 'Greg' WHERE EmployeeID = 10

TRIGGER Samples (2) CREATE TRIGGER tr_deleteconcatname ON employees FOR DELETE AS DECLARE @EmpID INT SELECT @EmpID =(SELECT EmployeeID FROM Deleted) DELETE FROM TriggerTest WHERE au_id = @EmpID DELETE FROM employees WHERE EmployeeID = 10

Apakah DYNAMIC SQL Itu? DYNAMIC SQL Suatu teknik pemrograman SQL Code yang memungkinkan menuliskan perintah SQL secara dinamis sebelum dieksekusi

4 a. Isi perintah SQL ditentukan pada saat sebelum dieksekusi. b. Fleksibilitas karena perintah SQL dianggap sebagai STRING. c. Tidak perlu compile ulang jika terjadi perubahan perintah SQL. Keuntungan Menggunakan DINAMIC SQL

Static SQL Dinamic SQL STATIC SQL Isi perintah tidak dapat dirubah pada saat eksekusi (runtime). Perintah SQL dianggap sebagai bagian dari program. Fleksibilitas rendah karena perintah SQL dianggap sudah fix/tetap. Sebagian proses dilakukan pada saat kompilasi sehingga secara umum performansi lebih baik dibanding Dynamic SQL. DYNAMIC SQL Isi perintah belum dapat diketahui sebelum eksekusi (runtime) shg harus ditentukan pada saat runtime. Perintah SQL dianggap sebagai string biasa sebelum proses eksekusi. Fleksibilitas tinggi karena perintah SQL dapat diubah-ubah pada saat eksekusi. Semua proses dilakukan pada saat eksekusi sehingga secara umum performansi kurang dibanding Static SQL.

Bagaimana menjalankan? Dinamic SQL Membuat Query dengan Parameter Menggunakan EXEC Menggunakan sp_executesql

Dynamic SQL Samples (1) DECLARE @City nvarchar(15) SET @city='paris' SELECT * FROM customers WHERE city=@city DECLARE @sqlcommand varchar(1000) DECLARE @columnlist varchar(75) DECLARE @city nvarchar(15) SET @columnlist = 'CustomerID, ContactName, City' SET @city = '''London''' SET @sqlcommand = 'SELECT ' + @columnlist + ' FROM customers WHERE City = ' + @city EXEC (@sqlcommand) DECLARE @sqlcommand nvarchar(1000) DECLARE @columnlist varchar(75) DECLARE @city nvarchar(15) SET @columnlist = 'CustomerID, ContactName, City' SET @city = '''London''' SET @sqlcommand = 'SELECT ' + @columnlist + ' FROM customers WHERE City = @city' EXECUTE sp_executesql @sqlcommand, N'@city nvarchar(75)', @city = @city

Dynamic SQL Samples (2) CREATE PROCEDURE GenericTableSelect @TableName VarChar(100) AS DECLARE @SQL VarChar(1000) SET @SQL = 'SELECT * FROM ' SET @SQL = @SQL + @TableName EXEC (@SQL) Dinamic SQL pada STORED PROCEDURE

Apakah CURSOR itu? CURSOR Object database yang dapat menampung banyak data untuk dimanipulasi baris per baris.

5 a. Menghasilkan data-data spesifik sesuai kebutuhan. b. Membantu penggunaan stored procedure yang berhubungan dengan manipulasi data. Keuntungan Menggunakan CURSOR

Daur Hidup Cursor» DECLARE, mendeklarasikan cursor sehingga terbentuk di memory Server Database.» OPEN, mengaktifkan cursor sehingga cursor dapat menampung data.» FETCH, mengambil data dari cursor untuk ditampung kedalam variabel.» WHILE, melakukan perulangan pada cursor jika operasi FETCH berhasil.» CLOSE, menonaktifkan cursor, tetapi bisa dibuka kembali.» DEALLOCATE, menghapus cursor, sehingga tidak bisa dibuka kembali.

DECLARE cursor_name [INSENSITIVE] [SCROLL] CURSOR FOR select_statement [FOR {READ ONLY UPDATE [OF column_name [,...n]]}] OPEN { { [GLOBAL] cursor_name } cursor_variable_name} CURSOR Syntax FETCH [[ NEXT PRIOR FIRST LAST ABSOLUTE {n @nvar} RELATIVE {n @nvar} ] FROM ] { { [GLOBAL] cursor_name } @cursor_variable_name} [INTO @variable_name[,...n] ] CLOSE { {[GLOBAL] cursor_name } cursor_variable_name } DEALLOCATE { { [GLOBAL] cursor_name } @cursor_variable_name}

CURSOR Samples DECLARE @ProductName nvarchar(40) DECLARE @idx int SET @idx=1 DECLARE @getproductname CURSOR SET @getproductname = CURSOR FOR SELECT ProductName FROM Products OPEN @getproductname FETCH NEXT FROM @getproductname INTO @ProductName WHILE @@FETCH_STATUS = 0 BEGIN PRINT 'Product #' + CAST(@idx AS char(3)) + @ProductName SET @idx= @idx+1 FETCH NEXT FROM @getproductname INTO @ProductName END CLOSE @getproductname DEALLOCATE @getproductname

Thank You & Good Luck THE END