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 :
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:
Info: Koneksi MySQL menggunakan MySQL Connector, dan TADOConnection pada Delphi 2009.
Selamat mencoba.
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