Posts Subscribe to (PIA BATTA)Comments

Pengantar STORE PROCEDURE di MySQL


Sebelum kita memulai membuat atau mungkin kita kebingungan tentang STORE PROCEDURE (singkat saja SP), ada baiknya kita mengetahui tentang cara atau kode-kode apa saja yang perlu diperhatikan dalam pembuatan SP. Oke berikut ini penjelasannya...

Kita membutuhkan DELIMITER pada perintah awal. Pada stored procedure di MySQL membutuhkan penanda sebagai akhir dari sebuah urutan perintah di stored procedure. Biasanya jika stored procedure tersebut memiliki satu perintah saja, kita dapat menggunakan semicolon “;” sebagai pemisah standarnya. Tetapi ini bermasalah jika SP tersebut memiliki routine yang panjang sedangkan “;” merupakan end of statement standar dari setiap perintah yang ada di SP. Jadi kita tidak dapat menggunakan “;” sebagai penutup dalam SP. Untuk itu kita perlu mendeklarasikan menggunakan DELIMITER sebagai karakter penutupnya. Tentu saja biasanya dengan karakter-karakter yang unik yang tidak ada pada routine, seperti: $$, //, !!, dan lainnya.

Untuk membuat SP kita memerlukan perintah CREATE PROCEDURE (). Sedangkan untuk menjalankan perubahan dari SP yang sudah ada kita hanya mengantinya dengan ALTER PROCEDURE.
Di dalam SP selalu dimulai dengan BEGIN dan END;.

Gunakan perintah DECLARE diikuti dengan tipe datanya untuk mendeklarasikan sebuah variable lokal. Kita dapat mebuat variable baru tanpa mendeklarasikannya terlebih dahulu dengan menambahkan @ pada nama variable yang kita butuhkan. Contoh: @kode

Gunakan perintah SET untuk mengisi nilai ke variable nya. Perintah ini sama untuk semua perintah SP pada semua platform.
Di dalam SP kita dapat menggunakan fungsi logika seperti pada program aplikasi yang lainya. Seperti IF THEN END IF;

Jalankan perintah SP tersebut dengan menggunakan perintah CALL ()
Untuk membuat tabel sementara: CREATE TEMPORARY TABLE ( )

Gunakan perintah DECLARE [CONTINUE/EXIT] HANDLER FOR 1054 SET [variabel] = 1 untuk membatalkan error yang terjadi akibat error nomor 1054. CONTINUE jika perintah error diabaikan, akibatnya procedure akan membalikan nilai kosong untuk perintah SQL yang dijalankan. EXIT jika ingin membatalkan perintah SQL yang error.

Untuk melakukan commit rollback pada saat menjalankan perintah untuk insert, update atau delete, gunakan perintah START TRANSACTION; [COMMIT/ROLLBACK];

Untuk mengambil banyaknya record yang dihasilkan dari perintah SQL yang baru dijalankan yaitu: ROW_COUNT() Perintah ini hanya khusus untuk transaksi sql seperti update, insert dan delete. Sedangkan untuk select gunakan FOUND_ROWS()

Untuk mendapatkan jumlah error dari perintah SQL yang baru dijalankan, gunakan: @@ERROR_COUNT Untuk mengambil nilai balikan dari sebuah field dengan tipe data integer auto increment yang baru saja diinsert baru, dengan perintah @@identity

Untuk melakukan eksekusi perintah sql melalui string parameter gunakan perintah seperti contoh dibawah ini:

SET @str = CONCAT(’SELECT * FROM authors WHERE id BETWEEN ‘, _min, ‘ AND ‘, _max);
PREPARE stmt FROM @str;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
atau
SET @s = ‘SELECT * FROM authors WHERE id BETWEEN ? AND ?’;
SET @min = _min;
SET @max = _max;
PREPARE stmt1 FROM @s;
EXECUTE stmt1 USING @min, @max;
DEALLOCATE PREPARE stmt1;


Kadang kita menggunakan table dengan id diset auto increment. Namun pada saat insert data yang baru kadang kita tidak tau berapa nilai auto increment yang baru saja dimasukan. Untuk mendapatkan nilainya, gunakan @@identity / last_insert_id()

MySQL memiliki fungsi untuk format date, fungsi ini tidak dimiliki oleh SQL Server.Gunakan DATE_FORMAT([datetime data],[format output])
Beberapa format yang ada dalam Date_FORMAT.


%a Singkatan nama hari (Sun..Sat)
%b Singkatan nama bulan (Jan..Dec)
%c Bulan berupa angka (0..12)
%D Hari dalam sebulan dalam perhitungan bahasa Inggris (0th, 1st, 2nd, 3rd, …)
%d Hari dalam sebulan berupa angka dengan dua digit (00..31)
%e Hari dalam sebulan berupa angka (0..31)
%f Microseconds (000000..999999)
%H Jam (00..23)
%h Jam (01..12)
%I Jam (01..12)
%i Menit dalam angka (00..59)
%j Hari dalam setahun dalam tiga digit (001..366)
%k Jam (0..23)
%l Jam (1..12)
%M Nama Bulan (January..December)
%m Bulan dalam angka dua digit (00..12)
%p AM atau PM
%r Waktu dalam 12 jam (hh:mm:ss diikuti dengan AM atau PM)
%S Detik (00..59)
%s Detik(00..59)
%T Waktu dalam 24 jam (hh:mm:ss)
%U Minggu (00..53), dengan hari minggu sebagai hari pertama
%u Minggu (00..53), dengan hari senin sebagai hari pertama
%V Minggu (01..53), dengan hari minggu sebagai hari pertama; digunakan dengan %X
%v Minggu (01..53), dengan hari senin sebagai hari pertama; digunakan dengan %x
%W Nama hari (Sunday..Saturday)
%w Nilai hari dalam seminggu (0=Sunday..6=Saturday)
%X Tahun dalam minggu, dengan minggu sebagai hari pertama, berupa angka dengan 4 digit; digunakan dengan %V
%x Tahun dalam minggu, dengan senin sebagai hari pertama, berupa angka dengan 4 digit; digunakan dengan %v
%Y Tahun (empat digit)
%y Tahun (dua digit)
%% Literal dengan karakter ‘%’
%x x, for any ‘x’ not listed above


Gunakan perintah CONVERT([expr] , [tipe]) dan CAST([expr] AS [tipe]) untuk merubah karakter output.

Beberapa type data yang ada pada MySQL
CHAR( ) A fixed section from 0 to 255 characters long.
VARCHAR( ) A variable section from 0 to 255 characters long.
TINYTEXT A string with a maximum length of 255 characters.
TEXT A string with a maximum length of 65535 characters.
BLOB A string with a maximum length of 65535 characters.
MEDIUMTEXT A string with a maximum length of 16777215 characters.
MEDIUMBLOB A string with a maximum length of 16777215 characters.
LONGTEXT A string with a maximum length of 4294967295 characters.
LONGBLOB A string with a maximum length of 4294967295 characters.

TINYINT( ) -128 to 127 normal; 0 to 255 UNSIGNED.
SMALLINT( ) -32768 to 32767 normal; 0 to 65535 UNSIGNED.
MEDIUMINT( ) -8388608 to 8388607 normal; 0 to 16777215 UNSIGNED.
INT( ) -2147483648 to 2147483647 normal; 0 to 4294967295 UNSIGNED.
BIGINT( ) -9223372036854775808 to 9223372036854775807 normal; 0 to 18446744073709551615 UNSIGNED.
FLOAT A small number with a floating decimal point.
DOUBLE( , ) A large number with a floating decimal point.
DECIMAL( , ) A DOUBLE stored as a string , allowing for a fixed decimal point.

DATE YYYY-MM-DD.
DATETIME YYYY-MM-DD HH:MM:SS.
TIMESTAMP YYYYMMDDHHMMSS.
TIME HH:MM:SS.


Sumber disini...



Semoga bermanfaat....

Categories



Widget by Scrapur

0 komentar:

:)) :)] ;)) ;;) :D ;) :p :(( :) :( :X =(( :-o :-/ :-* :| 8-} ~x( :-t b-( :-L x( =))

Posting Komentar

 
Dark Side Blogger Template Copyright 2009 - piaBATTA is proudly powered by Blogger.com Edited By Belajar SEO