Selasa, 27 September 2011

Tugas PBD pt 3

Nama :Kalista Wiwaha dewandaru
Nim :10.41010.0204
Dosen:Tan Amelia

Membuat contoh2x beserta pembahasannya tentang :

1. Stored Procedures (5 contoh, termasuk penggunaan parameter IN, OUT dan INOUT)

2. Functions (5 contoh, termasuk penggunaan parameter IN, OUT dan INOUT)

3. Trigger (5 contoh, trigger Insert, Delete, Update)



Jawabanya :

1. Stored procedure merupakan sebuah script/batch. Script ini disimpan dalam pada database, bukan file terpisah. Tidak seperti script biasa, store procedure bisa memiliki parameter input , output dan return values. Untuk MySQL baru bisa disupport untuk MySQL 5 ke atas , CONTOH:


CREATE [DEFINER = { user | CURRENT_USER }]
PROCEDURE sp_name ([proc_parameter[,...]]) [characteristic ...] routine_body
------||||||||----------------
CREATE FUNCTION sp_name
[DEFINER = { user | CURRENT_USER }]
([func_parameter[,...]]) RETURNS type [characteristic ...] routine_body

proc_parameter:
[ IN | OUT | INOUT ] param_name type

func_parameter:
param_name type

type:
Any valid MySQL data type

characteristic:
LANGUAGE SQL | [NOT] DETERMINISTIC | { CONTAINS SQL | NO SQL | READS SQL DATA | MODIFIES SQL DATA } | SQL SECURITY { DEFINER | INVOKER } | COMMENT 'string'

routine_body:
Valid SQL procedure statement
----------|||||||--------------------

Dan Store procedure nya :
-------------||||||||||||------------
DELIMITER //

DROP PROCEDURE IF EXISTS `perusahaan`.`sp_dept` //
CREATE DEFINER=`root`@`localhost`
PROCEDURE `perusahaan`.`sp_dept` ()
BEGIN
SELECT * FROM department;
END

//DELIMITER ;
-------------|||||||||||------------



Dan ini Stored procedure menggunakan parameter

DELIMITER //

DROP PROCEDURE IF EXISTS `perusahaan`.`sp_insertDepartment` //
CREATE PROCEDURE `perusahaan`.`sp_insertDepartment` (IN dnumber INT ,dname varchar(15))
BEGIN
INSERT INTO Department VALUES (dnumber,dname);
END
//DELIMITER ;


Contoh lainya :

CREATE PROCEDURE pr_honor AS
SELECT namainstruktur, honor FROM
instruktur
RETURN

Mengkoreksi Sebuah Prosedur
Statement ALTER harus digunakan

ALTER PROCEDURE pr_honor AS
select inisial, namainstruktur, honor
from instruktur
RETURN


2. Functions ialah sekumpulan perintah PL/SQL untuk menjalankan suatu tugas tertentu dan mengembalikan suatu nilai.
Terdapat pada sebuah program unit yang disimpan dalam database untuk mengerjakan suatu tugas dengan mengembalikan suatu nilai tertentu.



PRAKTIKUM PL/SQL (Function)

---Contoh function sederhana :

CREATE OR REPLACE FUNCTION FLATIHAN
return varchar
is
kata varchar(200);
begin
kata:='Latihan Function PL/SQL';
return kata;
end;

------ Contoh cara memanggil function diatas
select flatihan from dual;

------ Contoh function mengambil satu huruf depan, pada argument
CREATE OR REPLACE FUNCTION FLATIHAN1 (nama varchar)
return varchar
is
begin
return substr(nama,1,1);
end;
------ Contoh function perkalian argumen1 dengan argument2
CREATE OR REPLACE FUNCTION LATIHAN2 (angka number,pengali number)
return number
is
begin
return angka*pengali;
end;

------ Contoh Menggabungkan 2 buah argument bertipe varchar
CREATE OR REPLACE FUNCTION "SCOTT"."FLATIHAN3" (kata1 varchar,
kata2 varchar) return varchar
is
begin
return kata1 || ' Mempunyai Pekerjaan ' || kata2;
end;


3. Trigger adalah stored procedure yang akan dijalankan secara automatis bila ada perubahan data pada tabel, baik INSERT, UPDATE, maupun DELETE.

Contoh :

Sintaks untuk pembuatan Trigger ~

CREATE TRIGGER
ON
FOR INSERT, UPDATE, DELETE
AS

GO

-----------|||||||||||------------

Berikut ini adalah contoh Trigger data penjualan, dimana setiap ada data penjualan yang masuk ke tabel penjualan, maka di tabel lain akan terhitung penjumlahan total penjualan barang tersebut.

Sebelumnya kita buat terlebih dahulu sebuah tabel barang.

CREATE TABLE [dbo].[Table_barang](
[id] [int] NULL,
[kode_barang] [int] NOT NULL,
[nama_barang] [varchar](50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
[Total_Penjualan] [int] NULL,
CONSTRAINT [PK_Table_barang] PRIMARY KEY CLUSTERED
(
[kode_barang] ASC
)WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]

GO

------------||||||||||||-----------

Kemudian kita buat tabel penjualan barang (masing-masing item barang berbeda tabel). Contoh dibawah adalah mebuat tabel penjualan Baju :

CREATE TABLE [dbo].[Table_penjualan_baju](
[id] [int] NULL,
[kode_barang] [int] NULL,
[terjual] [int] NULL,
[tanggal] [datetime] NULL
) ON [PRIMARY]

--------------||||||||||--------------------
Selanjutnya kita buat sebuah Trigger, dimana apabila tabel penjualan baju diisi dengan data penjualan baju, maka total penjualan baju (kolom : Terjual) akan muncul di tabel barang (kolom : Total_Penjualan).

CREATE TRIGGER [TotalPenjualan_Baju]
ON [dbo].[Table_penjualan_baju]
AFTER INSERT,DELETE,UPDATE
AS
BEGIN
SET NOCOUNT ON;

DECLARE @kode int
DECLARE @jual int

SELECT @kode = kode_barang, @jual = sum(terjual) FROM Table_penjualan_baju Group by Kode_barang

if @jual is not null
UPDATE Table_barang SET Total_penjualan = @jual WHERE kode_barang = @kode
END


Demikian penjelasan 3 hal sekaligus tugas dari mata kuliah Pemograman Basis Data, Terima Kasih :)

Tidak ada komentar:

Posting Komentar