Jumat, 05 Juni 2009

procedure, function, trigger

saya benar2 minta maaf, karena saya tidak bisa menyampaikan materi yang seharusnya saya sampaikan di lab.

Trigger adalah fitur dari Database Engine MS SQL Server yang berfungsi untuk mengeksekusi query jika tabel mengalami event seperti ketika di tambah, ketika di edit atau ketika salah satu dari data pada tabel itu dihapus.

Stored Procedure juga merupakan salah satu dari fitur Database Engine MS SQL Server yang digunakan untuk mempercepat proses kerja dari pada pengolahan data.

store procedure
1. gunakan mysql query browser atau yog, terminal/ cmd juga bisa
2. pilih database yang akan dibuat untuk procedure

3. contoh dari procedure IN


mysql> use arum;
Database changed
mysql> show tables;
+----------------+
| Tables_in_arum |
+----------------+
| test1 |
| test2 |
| test3 |
| test4 |
+----------------+
4 rows in set (0.00 sec)

variable sudah ditentukan nilai belum ada,

mysql> delimiter $
mysql> create procedure delapan(a int, b char(10))
-> begin
-> set @satu = a;
-> set @dua = b;
-> end$
Query OK, 0 rows affected (0.02 sec)

mysql> delimiter ;
mysql> call delapan(10,'arum');
Query OK, 0 rows affected (0.00 sec)

mysql> select @satu, @dua;
+-------+------+
| @satu | @dua |
+-------+------+
| 10 | arum |
+-------+------+
1 row in set (0.00 sec)

mysql> select @satu;
+-------+
| @satu |
+-------+
| 10 |
+-------+
1 row in set (0.00 sec)


4. contoh procedure OUT
varialenya belum ditentukan tetapi nilainya sudah ditentukan

pembuatan procedurenya;
mysql> create procedure njobo (OUT a int) set a = 10;
Query OK, 0 rows affected (0.00 sec)

untuk menjalankan
mysql> call njobo(@aku);
Query OK, 0 rows affected (0.00 sec)

untuk meihat procedure yang dibuat
mysql> select @aku;
+------+
| @aku |
+------+
| 10 |
+------+
1 row in set (0.00 sec)

exemple lain
mysql> call njobo(@nike);
Query OK, 0 rows affected (0.00 sec)

mysql> select @nike;
+-------+
| @nike |
+-------+
| 10 |
+-------+
1 row in set (0.01 sec)

isi dari variable aku masih ada
mysql> select @aku;
+------+
| @aku |
+------+
| 10 |
+------+
1 row in set (0.00 sec)


function
tentu saja sama pilih database yang akan di gunakan untuk membuat fungsi
contoh fungsi untuk mendapatkan volume balok
mysql> create function volume (panjang int, lebar int, tinggi int) returns int d
eterministic
-> begin
-> declare volum int;
-> set volum = panjang * lebar * tinggi;
-> return volum;
-> end$
Query OK, 0 rows affected (0.00 sec)

untuk melihat hasil dari fungsi yang dibuat
mysql> select volume(12, 13, 2)$
+-------------------+
| volume(12, 13, 2) |
+-------------------+
| 312 |
+-------------------+
1 row in set (0.00 sec)


contoh lain
CREATE TABLE `data_siswa`.`tbl_siswa` (
`nis` char(10) NOT NULL,
`nama` varchar(255) NOT NULL,
`kelas` int(11) NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1


function untuk mengembalikan jumlah data dari setiap kelas

DELIMITER $$
CREATE FUNCTION sf_tampil_siswa_kelas (p_kelas int) RETURNS INT DETERMINISTIC

BEGIN
DECLARE jml INT;
SELECT COUNT(*) AS jml_kelas INTO jml FROM tb_siswa WHERE kelas = p_kelas;
RETURN jml;
END$$

DELIMITER;

 * DELIMITER = adalah untuk memberi tahu kepada myql soal delimiter yang digunakan, secara default menggunakan ; jadi bila ada tanda ; mysql akan mengartikan akhir dari statement, pada contoh di atas delimeter yang digunakan $$ jadi akhir statementnya adalah $$
* CREATE FUNCTION = adalah header untuk membuat function
* RETURNS = adalah untuk menentukan tipe data yang di return-kan oleh function
* DETERMINISTIC/ NOT DETERMINISTIC = adalah untuk menentukan yang bisa menggunakan function ini adalah user pembuatnya saja (determinisric) atau user siapa saja (not determinisric).
* BEGIN END = adalah body dari function jadi semua SQL nya di tulis disini.

contoh pemanggilannya seperiti dibawah ini:

select sf_tampil_siswa_kelas("2");

sebuah function hanya bisa memberikan return berupa nilai saja dan tidak bisa berupa resutlset

untuk penulisan DETEMINISTIC bisa ditulis secara implisit dengan memberikan setting global pada mysql dan secara default benilai NOT DETEMINISTIC , caranya dibawah ini:

SET GLOBAL log_bin_trust_function_creators = 1;


trigger

buatlah tabel seperti dibawah ini
CREATE TABLE test1(a1 INT);
CREATE TABLE test2(a2 INT);
CREATE TABLE test3(a3 INT NOT NULL AUTO_INCREMENT PRIMARY KEY);
CREATE TABLE test4(
a4 INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
b4 INT DEFAULT 0
);

delimiter |

cobalah script trigger ini
CREATE TRIGGER testref BEFORE INSERT ON test1
FOR EACH ROW BEGIN
INSERT INTO test2 SET a2 = NEW.a1;
DELETE FROM test3 WHERE a3 = NEW.a1;
UPDATE test4 SET b4 = b4 + 1 WHERE a4 = NEW.a1;
END;
|

delimiter ;

isikan pada tabel test3 sesuai dengan contoh
INSERT INTO test3 (a3) VALUES
(NULL), (NULL), (NULL), (NULL), (NULL),
(NULL), (NULL), (NULL), (NULL), (NULL);

INSERT INTO test4 (a4) VALUES
(0), (0), (0), (0), (0), (0), (0), (0), (0), (0);
mysql> INSERT INTO test1 VALUES 
-> (1), (3), (1), (7), (1), (8), (4), (4);
Query OK, 8 rows affected (0.01 sec)
Records: 8 Duplicates: 0 Warnings: 0

dan hasilnya:

mysql> SELECT * FROM test1;
+------+
| a1 |
+------+
| 1 |
| 3 |
| 1 |
| 7 |
| 1 |
| 8 |
| 4 |
| 4 |
+------+
8 rows in set (0.00 sec)

mysql> SELECT * FROM test2;
+------+
| a2 |
+------+
| 1 |
| 3 |
| 1 |
| 7 |
| 1 |
| 8 |
| 4 |
| 4 |
+------+
8 rows in set (0.00 sec)

mysql> SELECT * FROM test3;
+----+
| a3 |
+----+
| 2 |
| 5 |
| 6 |
| 9 |
| 10 |
+----+
5 rows in set (0.00 sec)

mysql> SELECT * FROM test4;
+----+------+
| a4 | b4 |
+----+------+
| 1 | 3 |
| 2 | 0 |
| 3 | 1 |
| 4 | 2 |
| 5 | 0 |
| 6 | 0 |
| 7 | 1 |
| 8 | 1 |
| 9 | 0 |
| 10 | 0 |
+----+------+
10 rows in set (0.00 sec)

Selasa, 26 Mei 2009

pemberithuan

untuk praktikum minggu ini ditiadakan,
untuk jumat depan pasti ada dan praktikan mengumpulkan lapres modul 4 sekalian latihannya juga dikerjakan,
dikumpulkan waktu praktikum. dan akan dibahas waktu praktikum
anda silahkan liat referensi dari buku, dan link yang mempelajari tentang store procedure

kegunaan store procedure
referesi store procedure 1
referesi store procedure 2
terimakasih....

Selasa, 05 Mei 2009

revisi praktikum basdat

bagi praktikan yang sudahdan belum mengumpulkan lapres modul 1, 2, 3, silahkan perbaiki modul I dengan bertemu saya,
karena untuk relasi ternyata ada yang keliru....
sekian terimakasih

Jumat, 17 April 2009

praktikum basisdata

untuk praktikum basis data silahkan kalian eksplore kemampuan kalian dalam basisdata karena pasti akan ada poin lebih untuk kalian,
untuk praktikum selanjutnya diadakan pada jumat,1 mei 2009 dan mengumpulkan modul 2 + modul 3
pada saat mengumpulkan lapres anda harus asistensi ke asisten karena itu trmasuk pada prosentase penilainan praktikum
terimakasih ^_^

Selasa, 23 Desember 2008

tugas akhir SO

kepada
asdos yang terbaik....

terima kasih atas bimbingannya selama ini dan sebagai hadiah yang telah sampean minta sebelumya saya persembahkan tugas akhir sistem operasi yang berjudul

melakukan instalasi dengan mengunakan source (bagi yang debian based menggunakan dpkg -i, bagi yang rpm mengunakan rpm -ivh) , dan instalsi mengunakan repository (bagi yang deb menggunakan apt-get, rpm menggunakan zypper)

dan untuk meihat secara lengkap silahkan sampean download link arum_manis

nilai praktikum

akhirnya praktikum ebusiness selesai....
terima kasih atas kerja sama temen-temen...
saya minta maaf jika nilai yang saya kasih kurang memuaskan kalian.
nilai praktikum yang saya setorkan ke bu vivi, klik here
untuk mengetahui nilai kalian

Rabu, 17 Desember 2008

waktu pengumpulan

bagi teman-teman yang sudah mengerjakan laporan modul5 segera dikerjakan dan dikumpulkan tepat waktu.

untuk final projeknya kerjakan sebisa kalian dan tetap berusahan karena itu akan jadi penilaian tersendiri untuk anda.

jika saya selaku asisten mata kuliah ini selalu membuat anda merasa tidak bisa bernafas dengan lega, saya benar-benar minta m'f.

terimakasih atas perhatian dan kerjasama teman-teman.