Kamis, 05 Maret 2009

Membuat Function di MySQL

FUNCTION adalah salah satu feature yang terdapat di mysql 5.0 sedang-kan Function adalah
kumpulan-kumpulan SQL berupa rountine yang di simpan dalam database MySQL Server. biasanya function ini dikombinasikan dengan store pocedure atau bisa juga tidak di kombinasikan dengan store procedure


oke berikut ini cara membuat function

dalam contoh dibawah ini kasus tentang sistem informasi sekolah, yang mana function yang dibuat akan mengembalikan nilai berupa jumlah siswa dari setiap kelas.



sturuktur tabel siswa

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 
;


penjelasannya sebagai berikut:
  • 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;

oke bro... semoga membatu... selamat mencoba juga...

13 komentar:

  1. Thanku Bro...
    Bermanfaat Sekali Artikelnya

    BalasHapus
  2. Sip tadinya aku nyobain seharian ga bisa2. Tp setelah liat penjelasan di atas langsung bisa.
    thank's bro...

    BalasHapus
  3. makasih banget..... tugas q jd kelar

    BalasHapus
  4. bos ada error keknya

    DELIMITER; setelah END$$ seharusnya DELIMITER ;
    kudu pake spasi

    CMIIW

    BalasHapus
  5. bro bisa tanya dikit kalau function di dalamnya terdapat function bisa ga yah?

    BalasHapus
  6. bisa mas... memangil function di dalam function bisa dilakukan mas..

    BalasHapus
  7. Mau tanya dong Gan
    kalau di dalam function ada
    declare
    select field1, field2 from tblcoba
    field1 tadi taro di declare val1 dan
    field2 tadi taro di declare val2


    thx

    BalasHapus
    Balasan
    1. Baru menaruh hasil query dengan menggunakan satu buah field. Caranya yaitu dengan teknik cursor, sperti yang ada di link ini : http://dendieisme.blogspot.com/2009/07/cursor-store-procedure-mysql.html

      Hapus
  8. Hmm maaf saya masih rada kurang ngerti
    Jadi sebenarnya fungsi dari function itu apa ya,bisa dijelasin lebih detail kalau bisa dalam studi kasus?

    BalasHapus