Welcome

Welcome, thanks to look my blog

Wednesday 17 February 2016

MySQL Store Procedure dengan DbGo Delphi

MySQL Store Procedure dengan DbGo Delphi

Bagaimana menjalankan store procedure MySQL melalaui Delphi ?, menurut dokumentasi MySQL bahwa MySQL 5 keatas telah memiliki fasilitas untuk membentuk store procedure. Namun tidak seperti MSSQL Store procedure yang dapat dieksekusi melalui komponen adoStoreproc, MySQL tidak dapat dieksekusi melalui komponen ini (pada saat ini). Lalu bagaimana mengeksekusi MySQL Store Procedure?

Namun sebelumnya akan dibentuk suatu Store Proc sederhana pada MySQL, Store procedure dapat dibentuk melalui shell MySQL atau melalui tool MySQL Query Browser.
Contoh :
DELIMITER $$

DROP PROCEDURE IF EXISTS `insertKaryawan` $$
CREATE DEFINER=`root`@`localhost` PROCEDURE `insertKaryawan`(IN snip varchar(10),
                                                 IN snama varchar(100),
                                                 IN stglmasuk datetime,
                                                 IN stglkeluar datetime)
BEGIN
    DECLARE iCount int DEFAULT 0;
    SELECT COUNT(nip) INTO iCount
    FROM karyawan
    WHERE nip = snip;
    IF iCount = 0 THEN
       IF ISNULL(stglkeluar)=1 THEN
          INSERT INTO karyawan(nip,nama,tglmasuk,iStatus)
          VALUES (snip,snama,stglmasuk,1);
       END IF;
    ELSE
       IF ISNULL(stglkeluar)=0 THEN
          UPDATE karyawan SET tglkeluar = stglkeluar,iStatus =0
          WHERE nip = snip;
       ELSE
          UPDATE karyawan SET nama=snama,tglmasuk=stglmasuk,iStatus = 1
          WHERE nip =snip;
       END IF;
    END IF;

END $$

DELIMITER ;
Store Procedure diatas dibentuk dengan suatu rule tertentu, yaitu bila suatu nip karyawan terdapat di dalam sebuah table maka data karyawan tersebut akan di update, jika tidak ada maka dibentuk suatu data yang baru. Untuk lebih mengetahui cara pembentukan store procedure hendaknya anda memiliki dokumentasi mengenai MySQL yang dapat di download free dari web site MySQL.

Dari Store procedure diatas kita memiliki data berupa datetime, yang mungkin merupakan kendala untuk mengeksekusinya, karena kita harus menuliskannya sesuai format, yaitu defaultnya bertipe yyyymmdd, dan dapat berbeda sesuai dengan format server MySql anda.

Lalu kita akan mengeksekusi Store Procedure tersebut, dengan membuat sebuah procedure baru akan lebih memudahkan untuk melakukannya:
procedure ExecuteKaryawan
               (nip:string;nama:string;
                tglmasuk:TDateTime;
                tglkeluar:TDateTime);
    var :sql:string;
    begin
         sql := 'CALL insertKaryawan('+QuotedStr(nip)+','+
                                  QuotedStr(nama+','+
                                  QuotedStr(FormatDateTime('yyyymmdd',tglmasuk))+',';
         if (tglkeluar =0) then
            sql := sql +'Null'
         else sql :=sql +QuotedStr(FormatDateTime('yyyymmdd',tglkeluar));
         sql := sql +')';
         DataModule1.ADOConnection2.Execute(sql);
    end;
Dengan memiliki procedure diatas kita sudah dapat melakukan input karyawan dan update karyawan, jadi disini proses eksekusi Store Procedure dijalankan melalui AdoConnection.

Info: Koneksi MySQL menggunakan MySQL Connector, dan TADOConnection pada Delphi 2009.
Selamat mencoba.


sumber:http://e-codedelphi.blogspot.co.id/2010/01/mysql-store-procedure-dengan-dbgo.html

No comments:

Post a Comment