• Banyak alasan untuk percaya masa depan akan lebih baik. Fight!

    Stored Function pada Database


    Perbedaannya dengan stored procedure adalah store function biasanya ditujukan untuk mengerjakan proses yang akan mengembalikan nilai. Stored function tidak dapat memroses ( berisi ) query data

    Seperti “select ………………”, kecuali dengan mekanisme cursor. Sedangkan untuk perintah delete dan update masih bisa.

    /*stored function mengambil data gaji karyawan berdasarkan jabatannya*/

    Delimiter$$
    drop function if exists gaji$$
    Create function gaji(jabatan char(1))
    returns int
    Begin

    If (lower(jabatan)=’a') then
    return 3000000;

    Elseif (lower(jabatan)=’b') then

    return 2000000;

    Elseif (lower(jabatan)=’c') then
    return 1000000;


    Else
    return 500000;

    End if;
    End$$
    Delimiter;

    Sekedar tambahan : function dapat dipanggil dari sebuah stored procedure ataupun dari dalam trigger.

    Catatan : di dalam stored function hanya diperbolehkan untuk melewatkan parameter input ( tanpa diawali clause “in” ).

    Implementasi type data enum dan set

    Delimiter$$
    drop function if exists keputusan$$
    Create function keputusan(opsi char(1))
    returns enum(‘pasti’,'tidak pasti’,'mungkin’)
    Begin

    If (lower(opsi)=’a') then
    return ‘pasti’;

    Elseif (lower(opsi)=’b') then
    return ‘tidak pasti’;

    Else
    return ‘mungkin’;

    End if;
    End$$
    Delimiter;

    Catatan : type data enum merupakan set data, perbedaannya dengan type set adalah type set mendukung untuk pemberian nilai ganda. Missal set datanya ‘pasti’,’tidak pasti’,’mungkin’ boleh untuk diset ketiga – tiganya pada sebuah variable set.

    Contoh:

    declare keputusan enum(‘pasti’,’tidak pasti’,’mungkin’);
    set keputusan=’pasti,tidak pasti’;
    Implementasi clause “case” … “end case”
    Delimiter$$

    drop function if exists doorprize$$

    Create function doorprize(status_pelanggan char(10), saldo float)

    returns char(12)

    Begin

    declare diskon float;
    CASE status_pelanggan

    WHEN ‘PLATINUM’ THEN

    Set diskon=0.1*saldo;

    WHEN ‘GOLD’ THEN
    Set diskon=0.05*saldo;

    WHEN ‘SILVER’ THEN
    Set diskon=0.02*saldo;

    WHEN ‘BRONZE’ THEN
    Set diskon=0.01*saldo;

    END CASE;
    Return format(diskon,2);

    End$$
    Delimiter;

    Catatan : fungsi format berguna untuk merubah pemisah ribuan pada nilai diskon dengan 2 digit decimal. Nilai yang dikembalikan berubah menjadi string.

    sumber : http://yora15.wordpress.com

    2 comments:

    1. How are u?? can u follow to my blog. please

      ReplyDelete
    2. @irvan : of course... i did it...

      ReplyDelete

    Salam blogger...

     

    Blog Status

    Free Hit Counter
    HTML Counter
    free counters

    Followers