“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!. :D 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 , juga ditambahkan dengan procedure.

Apa guna procedure dalam kasus mas agung?, ternyata dia membuat sebuah procedure untuk menangani . Wah ternyata sekarang, dengan autoreply dari kita bisa mengirimkan banyak data/record dari database. Karena dengan , 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 secara otomatis menginsert data ke table outbox berupa 1 buah record. Yaitu berupa nilai mahasiswa yang diminta.

Pada kasus yang melibatkan procedure, kita membutuhkan menginsertkan data ke table outbox untuk mengirimkan lebih dari 1 record. Artinya pada procedure terdapat yang melakukan looping untuk menselect data yang dipilih. Sebagai contoh pada kasus yang sudah teman saya buat dikantornya, dia membuat sebuah procedure yang menempatkan untuk memilih informasi semua alamat dan nomor telepon  dari kota yang di request oleh si peminta informasi (pelanggan). Sebagai contoh, sang pelanggan mengirim berupa keyword “info#jakarta”, maka procedure akan melakukan looping untuk melakukan pencarian data info tempat di jakarta. Setelah looping menghasilkan data, maka 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 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 memanggil procedure..

CREATE DEFINER=`root`@`localhost` `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 ke sini’, NULL, ‘false’, ‘-1′, NULL, ”,

‘default’, ”);
end if ;
END;

masih banyak kasus yang bisa menggunakan 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: , , , , , , ,

Tags: , , , , , , ,

Posted in Private

13 Responses to ““Gammu with MySQL procedure””


reza_as October 19th, 2008 at 5:22 pm

halo… mas gimana kabarnya?
oh ya kalau dari kasus yang diatas, kalau data yang dikirim dari database ternyata melebihi jumlah karakter maksimal(160 cr) yang bisa dikirim oleh gammu dalam 1 sms, apakah gammu akan mengirim lebih dari 1 sms atau hanya maksimal 1 sms saja yang bisa dikirim??

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?

miftahsteven November 4th, 2008 at 4:25 pm

yeap, bikin di menu procedure nya TOAD aja mas prima.
atau kalo nggak, coba cara basic di konsol. Tp saya rasa dgn toad itu sangat mudah sekali.

Prima November 8th, 2008 at 9:20 am

Mas,, bisa minta contoh database (table) yg digunakan untuk membuat cursor di atas ga? fieldnya ap aj.. soalnya scriptnya agak sulit saya cerna kalau ga liat tablenya.. hehe

mohon sharingnya ke prima_497@yahoo.co.id

Mohon bantuannya ya mas!!

prima November 9th, 2008 at 10:41 am

Mohon bantuannya lg ya mas…

carikota1
p_in
p_out
done
l_kota
l_kota1
cur_1
outlet
kota
kota1

itu ap ya mas, nama tablenya ap?, primarynya ap?, variablenya yg mana aj?

Terima Kasih sebelumnya..

Agung November 11th, 2008 at 11:44 am

untuk table kota :
Field Type
kota1 varchar(20)
outlet varchar(50)
telp varchar(50)

jadi dicursor itu berfungsi mencari data outlet berdasarkan kota. klo mau lebih jelas tentang cursor ada.
http://dev.mysql.com/doc/refman/5.0/en/cursors.html
moga membantu.

Gusty November 17th, 2008 at 6:04 pm

Mohon bantuannya donk para master gammu,,

kalau misalnya dalam suatu table terdapat field: ID, Nama, Alamat, NoHP.

Bagaimana cara membuat select pada triggernya kalau misalnya kita ingin mengirimkan sms balasan dengan isi Nama dan Alamatnya??

Apakah bisa dengan menggunakan cursor?

syahli November 21st, 2008 at 7:26 pm

Mas mau tanyan nih saya pas coba import database nya tabel Trigger nya ndk mau ke import tuh, klo tabel kota bisa ke import, saya pake XAMPP, terus mas saya mau tanya mas gammu –identify pas saya jalanin akhgirnya langsung close sendiri, terus gammu –smsd MYSQL smsdrc juga close sendiri jadi ndk ada perintah press Ctrl + C….
Mohon pencerahannya mas.
Makasih

arie November 24th, 2008 at 10:44 am

mas, boleh dong minta kirim tabel yang jadi contoh itu. bingung soalnya kalau cuma liat sintax. ke ariewahyu@gmail.com y mas. Thx

syahli December 1st, 2008 at 10:24 am

mas postingnya kok ndk dibls ya, lg sibuk ya?
saya ndk bisa import tuh mas trigger.sql sama pro_carikota.sql ndk bisa di import ke phpmyadmin. mohon pencerahannya mas.

Agung December 1st, 2008 at 2:48 pm

syahli December 1st, 2008 at 10:24 am

mas postingnya kok ndk dibls ya, lg sibuk ya?
saya ndk bisa import tuh mas trigger.sql sama pro_carikota.sql ndk bisa di import ke phpmyadmin. mohon pencerahannya mas.

===========================

pake mysql berapa mas? aq bisa kok
di 5.0.67

syahli December 3rd, 2008 at 6:42 pm

saya pake bawaan paket dari xampp,
Kayak gini pesannya mas:

Error

SQL query:

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
);

MySQL said: Documentation
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ” at line 5

makasih ya udh dijawab….hehehe

hartono December 20th, 2008 at 10:46 am

salam sukses…
mas bs ngasih cnth untuk skrip auto reply yg sederhana gak? terus bisa gak ya pada gammu untuk biaya sms balasan dibebankan pada si penerima

thx before



Leave a Reply