“Gammu with MySQL procedure”
Sudah memahami konsep gammu?. Sekarang saya mau share tentang gammu lagi nih. Kali ini tentang procedure di mysql. Tahukah anda, bahwa dengan procedure mysql, aplikasi kita akan semakin Mantaaf!.
Terima kasih buat mas agung rachmanto yang sudah memberikan inspirasi. Teman saya yang satu ini memberikan sedikit testimoni dari aplikasi yang sudah dia buat di kantornya. Dia membuat sebuah kasus, auto reply informasi lokasi cabang kantor di semua kota. Ternyata dia membuat project ini selain menggunakan trigger, juga ditambahkan dengan procedure.
Apa guna procedure dalam kasus mas agung?, ternyata dia membuat sebuah procedure untuk menangani cursor. Wah ternyata sekarang, dengan autoreply dari trigger kita bisa mengirimkan banyak data/record dari database. Karena dengan cursor, dimungkinkan adanya pengembalian nilai data yang lebih dari satu data. Sebelumnya pada share terdahulu kita menggunakan kasus autoreply dengan mengirimkan 1 buah record. Masih ingat kasus autoreply nilai mahasiswa pada pembahasan gammu bagian 2. Saat itu trigger secara otomatis menginsert data ke table outbox berupa 1 buah record. Yaitu berupa nilai mahasiswa yang diminta.
Pada kasus yang melibatkan procedure, kita membutuhkan trigger menginsertkan data ke table outbox untuk mengirimkan lebih dari 1 record. Artinya pada procedure terdapat cursor yang melakukan looping untuk menselect data yang dipilih. Sebagai contoh pada kasus yang sudah teman saya buat dikantornya, dia membuat sebuah procedure yang menempatkan cursor untuk memilih informasi semua alamat dan nomor telepon dari kota yang di request oleh si peminta informasi (pelanggan). Sebagai contoh, sang pelanggan mengirim sms berupa keyword “info#jakarta”, maka procedure akan melakukan looping untuk melakukan pencarian data info tempat di jakarta. Setelah looping menghasilkan data, maka trigger menjalankan procedure tersebut untuk menginsertkan hasil procedure ke table outbox. Terjadilah proses autoreply yang isinya berupa alamat2 dan nomor2 telepon kantor di jakarta. Wah keren khan?.. bgini nih simple procedurenya.
DROP PROCEDURE IF EXISTS smsd.carikota1;
CREATE PROCEDURE smsd.`carikota1`(IN p_in VARCHAR(500),OUT p_out varchar(500))
BEGIN
DECLARE done INT default 0;
DECLARE l_kota VARCHAR(500);
DECLARE l_kota1 VARCHAR(500);
DECLARE cur_1 CURSOR FOR SELECT outlet FROM kota WHERE kota1=p_in;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1;
OPEN cur_1;
set l_kota1=”;
REPEAT
FETCH cur_1 INTO l_kota;
if done<>1 then
SET l_kota1=CONCAT(l_kota,’ - ‘,l_kota1);
end if;
UNTIL done END REPEAT;
set p_out=l_kota1;
CLOSE cur_1;
END;
dan beginilah sang trigger memanggil procedure..
CREATE DEFINER=`root`@`localhost` TRIGGER `smsd`.`auto_kota` AFTER INSERT ON smsd.inbox FOR EACH ROW
BEGIN
if substring(NEW.TextDecoded,1,4) = ‘kota’ then
call carikota1(SUBSTRING(NEW.TextDecoded,6),@x);
INSERT INTO `smsd`.`outbox` (`UpdatedInDB`, `InsertIntoDB`,
`SendingDateTime`, `Text`, `DestinationNumber`, `Coding`, `UDH`,
`Class`, `TextDecoded`, `ID`, `MultiPart`, `RelativeValidity`,
`SenderID`, `SendingTimeOut`, `DeliveryReport`, `CreatorID`) VALUES
(NOW(), ”,”, NULL, NEW.SenderNumber, ‘Default_No_Compression’, NULL,
‘-1′, @x, NULL, ‘false’, ‘-1′, NULL, ”,
‘default’, ”);
end if;
if substring(NEW.TextDecoded,1,4) = ‘info’ then
INSERT INTO `smsd`.`outbox` (`UpdatedInDB`, `InsertIntoDB`,
`SendingDateTime`, `Text`, `DestinationNumber`, `Coding`, `UDH`,
`Class`, `TextDecoded`, `ID`, `MultiPart`, `RelativeValidity`,
`SenderID`, `SendingTimeOut`, `DeliveryReport`, `CreatorID`) VALUES
(NOW(), ”,”, NULL, NEW.SenderNumber, ‘Default_No_Compression’, NULL,
‘-1′, ‘Terima Kasih sudah mengirimkan sms ke sini’, NULL, ‘false’, ‘-1′, NULL, ”,
‘default’, ”);
end if ;
END;
masih banyak kasus yang bisa menggunakan cursor pada procedure ini. Barangkali anda memiliki kasus serupa? tidak ada salahnya untuk dishare disini.
semoga tulisan ini bermanfaat. Sekali lagi terimakasih buat mas agung atas testimoninya.
Bertanya lebih jauh?? Ke forum gammu nya freaksides aja disini > http://www.freaksides.com/forum
Tags: Application, cursor, mysql procedure, naura sms, PHP, SMS, sms gateway, triggerPosted in Private
Freaksides: Sisi-sisi yang terbuang. Hal-hal yang sudah tidak terpakai tidak selamanya sampah. Mungkin masih bermanfaat. Banyak hal yang anda dapat di sini, dan memang tidak begitu penting. Tapi semua yang terbuang disini bisa jadi bermanfaat buat anda. Di sisi-sisi yang terbuang inilah saya ingin berbagi.


Prima November 4th, 2008 at 4:11 pm
Maaf mas,, numpang tanya. Kalau Cursor itu dibuatnya pake Toadfor my sql juga ya mas?
Kalau ga, gimana caranya?