Database Server
Terdapat 3 Bagian Penting Program Yang Tersimpan Database Server hearts
1. Prosedur Tersimpan
Sejumlah Perintah Program hearts Kode Dan masukan parameter beberapa, Dan sejumlah hasil temuan ATAU Keluaran. Cara pemanggilannya DENGAN mengeksekusi nāma proscdure tersebut.
2. Disimpan Fungsi
Fungsi hampir sama DENGAN prosedur yang tersimpan. Fungsi mempunyai sejumlah Penyempitan masukan Dan Hanya mengembalikan Satu output, standar Perintah Yang digunakan menggunakan Perintah standar SQL.
3. Memicu
Program Suatu Yang akan melakukan respon hearts aktivitas basis data, berkaitan Perintah-Perintah DML (insert, update, delete) operasional pãda tabel. Biasanya digunakan UNTUK otomatisasi ATAU validasi.
Pemrograman Disimpan Prosedure hearts MySQL.
Disimpan prosedur Adalah permasalah Kompleks Yang Cukup dibahas UNTUK, adapun Bagian Penting prosedur pãda disimpan:
Program Kapan akan diabut, parameter Yang dilewatkan akan artikel komersial Yang dikeluarkan, basis data hearts Interaksi, precedure disimpan menciptakan, fungsi fungsi Dan memicu hearts bahasa pemrograman.
Apa Yang Dibutuhkan?
• MySQL Server
• Teks Editor vi, emacs,
• MySQL Query Browser, SQLyog dll
Prosedur Tersimpan manciptakan
Beberapa Perintah UNTUK MEMBUAT disimpan prosedur:
CREATE PROSEDUR, CREATE FUNCTION, ATAU CREATE TRIGGER
Contoh:
DELIMITER $$
DROP PROSEDUR JIKA ada Kata () $$;
CREATE PROSEDUR Kata ()
BEGIN
SELECT 'AKAKOM';
END $$
DELIMITER;
DELIMITER $$ Akhir Dari peritah tubuh (badan / skrip mysql)
DROP PROSEDUR JIKA ada Kata () $$; Perintah UNTUK cara menghapus JIKA prosedurnya Sudah PERNAH ADA.
CREATE PROSEDUR Kata () mencitapkan Prosedur degan nāma Kata (parameter isi kalau ADA),
BEGIN Awal Perintah / blok Perintah Dan END Akhir Perintah
SELECT Perintah menapilkan
Cara memanggilanya:
Masukkan password: ****
Selamat datang di monitor MySQL. Perintah diakhiri dengan; . atau \ g
koneksi MySQL id adalah 2
versi Server: 6.0.4-alpha-komunitas-log MySQL Community Server (GPL)
Ketik 'bantuan'; atau '\ h' untuk membantu. Ketik '\ c' untuk menghapus buffer.
mysql> penggunaan coba;
Database berubah
mysql> HUBUNGI Kata ();
+ --- +
| AKAKOM |
+ --- +
| AKAKOM |
+ --- +
1 row in set (0.00 sec)
Query OK, 0 rows affected (0.00 sec)
mysql>
Variabel
Variabel dalam Bahasa SQL, fungsinya sama DENGAN bahasa pemrograman paxda umumnya.
Perintahnya menggunakan MENYATAKAN, Dan UNTUK memberikan Nilai menggunakan Perintah SET.
Parameter
Parameter Adalah suatu Nilai yanga akan dilewatkan ATAU dimasukan UNTUK diproses hearts fungsi fungsi ATAU prosedure.
Contoh
DELIMITER $$
CREATE PROSEDUR Demo_Var ()
BEGIN
MENYATAKAN x int;
MENYATAKAN y int;
SET x = 10;
SET y = 20;
PILIH x + y;
END $$;
DELIMITER;
PANGGILAN Demo_var
Hasil
+ - +
| x + y |
+ - +
| 30 |
+ - +
1 row in set (0.00 sec)
SEBUAH Prosedur DENGAN mengunakan parameter masukan, akan diproses hearts fungsi fungsi Dan kemudian timapilkan, hasilnya.
Contoh:
DELIMITER $$
CREATE PROSEDUR my_akar (masukan INT)
BEGIN
MENYATAKAN hasil temuan FLOAT,
SET hasil temuan = SQRT (masukan),
hasil temuan SELECT,
END $$;
DELIMITER;
Cara memanggil prosedur pengajian
PANGGILAN my_akar (25);
Hasil Keluaran Astra Honda Motor sebagai berikut:
mysql> PANGGILAN my_akar (25);
+ --- +
| hasil temuan |
+ --- +
| 5 |
+ --- +
1 baris dalam set (0,03 detik)
Query OK, 0 rows affected (0.05 sec)
Prosedure menggunakan parameter masukan Dan Keluaran (INT Dan OUT)
Contoh:
DELIMITER $$
CREATE PROSEDUR my_sqrt (masukan INT, FLOAT OUT nilai_keluar)
BEGIN
SET nilai_keluar = SQRT (masukan);
END $$;
DELIMITER;
Cara menjalankan Prosedur ADA doa Tahap
PANGGILAN my_sqrt (9, @ out_value)
out_value SELECT
Memampilkan Keluaran Nilai:
mysql> PANGGILAN my_akar (25);
+ --- +
| hasil temuan |
+ --- +
| 5 |
+ --- +
1 baris dalam set (0,03 detik)
Query OK, 0 rows affected (0.05 sec)
mysql> PANGGILAN my_sqrt (9 @ out_value);
Query OK, 0 rows affected (0.05 sec)
mysql> SELECTout_value;
+ ---- +
|out_value |
+ ---- +
| 3 |
+ ---- +
Kondisional
Perintah kondisional, UNTUK melakukan uji Kondisi terapat Satu masukan Dan doa piliahan Dari Keluaran, Kondisi Benar ATAU asalah. Perintahnya menggunakan IF Ngayogyakarta KASUS.
DELIMITER $$
CREATE PROSEDUR Diskon (Pembayaran NUMERIC (10,2), OUT Diskon NUMERIC (8,2))
BEGIN
IF (Pembayaran> 100000) THEN
SET Diskon = Pembayaran * 0,8;
ELSEIF (Pembayaran> 500000) THEN
SET Diskon = Pembayaran * 0,9;
ELSE
SET Diskon = Pembayaran;
END IF;
END $$;
DELIMITER;
Cara memanggilnya:
mysql> PANGGILAN Diskon (100000, @ new_price);
Query OK, 0 rows affected (0.05 sec)
mysql> SELECTnew_price;
+ ---- +
|new_price |
+ ---- +
| 100.000,00 |
+ ---- +
1 baris dalam set (0.00 sec)
Putaran
Lingkaran Adalah Proses perulangan. Dalam MYSQL ADA 3 jenis lingkaran:
• loop sederhana menggunakan LOOP Dan END LOOP c
• loop Yang Disertai Kontrol Kondisi Benar ATAU JIKA shalat Benar lingkaran akan, perintannya menggunakan sementara Dan END WHILE
Perulangan • Yang menggunakan reapeat Dan, sampai
Contoh:
DELIMITER $$
CREATE PROSEDUR Loop_sederhana ()
BEGIN
MENYATAKAN konter INT DEFAULT 0;
differences LOOP
SET konter konter = + 1;
IF konter = 10 THEN
TINGGALKAN differences;
END IF;
SELECT konter;
END LOOP differences;
PILIH 'Konter to 10';
END $$;
DELIMITER;
TINGGALKAN UNTUK mangarah to differences label.
Interaktif DENGAN database
Disimpan Prosedure JUGA basi melibatkan Data hearts tabel. Ada 4 tipe Bagian Interaksi ANTARA lian:
Hasil disimpan prosedur Dari Perintah SQL menghasilkan Nilai balik Satu baris Yang dimasukan to hearts variabel Lokal.
Buat "kursor" hasil temuan iterasi, yanng mengasilkan baris Disimpan to Kursor
Eksekusi Perintah SQL menghasilkan, with Perintah PANGGILAN progarm akan baris sejumlah menghasilkan.
UNTUK Perintah INSERT, UPDATE, DELETE, TIDAK mengasilkan rekor
SELECT INTO Menggunakan Variabel Lokal
Dalam prosedur tersimpan seperti halnya pemroraman biasa, Terdapat variabel Lokal, Yaitu variabel Yang menampung data yang & e. UNTUK mengisikan Nilai variabel tersebut DENGAN Perintah INTO
Contoh:
Buatalah tabel JUALAN
CREATE TABLE JUALAN (char no_tran (5),
kd_plg char (5),
tanggal tgl,
nil_tran int);
Rekaman Jumlah Harga: Tambahkan
INSERT INTO JUALAN VALUES ('00001', 'P0001', '2009/07/10', 4000000);
INSERT INTO JUALAN VALUES ('00002', 'P0001', '2009/07/11', 5000000);
INSERT INTO NILAI JUALAN ('00003', 'P0002', '2009/07/11', 700000);
INSERT INTO NILAI JUALAN ('00004', 'P0003', '2009/09/10', 4030000);
Prosedur Tersimpan Menciptakan
DELIMITER $$
DROP PROSEDUR JIKA ada pelanggan_jualan;
$$
CREATE PROSEDUR pelanggan_jualan (in_kd_plg char (5))
BEGIN
DECLARE Total_jual INT;
SELECT SUM (nil_tran) KE Total_jual
DARI JUALAN
MANA kd_plg = in_kd_plg;
SELECT concate ('Jangka Waktu Transaksi Pelanggan No,:', in_kd_plg, 'Adalah =', Total_jual);
END;
$$
Penjelasan
• DELIMITER: Awal skrip
• DROP PROSEDUR JIKA ada: cara menghapus JIKA prosedure pelanggan_jualan ADA, Jika tidak diabaikan.
• BEGIN: Awal blok Perintah (Proses)
• MENYATAKAN Total_jual INT: bagian Deklarasi variabel
• SUM SELECT (nil_tran) KE Total_jual DARI JUALAN MANA kd_plg = in_kd_plg; : Perintah SQL menpilkan
• SELECT concate ('Jangka Waktu Transaksi Pelanggan No,:', in_kd_plg, 'Adalah =', Total_jual); : Hasil temuan ditampilkan kelayar DENGAN keterangannya
• END; Akhir Dari blok Proses
Melibatkan Tabel
DELIMITER $$
DROP PROSEDUR JIKA ADA cari;
$$
CREATE PROCEDURE cari (in_no_mhs char (9))
BEGIN
no_mhs SELECT, nama, alamat, agama
DARI MHS
MANA no_mhs = in_no_mhs;
END;
$$
Kasus Contoh
Bualah tabel:
Tabel NILAI
CREATE TABLE Nilai (no_mhs char (9), kd_mk char (5), char Nilai (1),
kunci utama (no_mhs, kd_mk));
INSERT INTO NILAI VALUES ('05541001', 'T1001', 'A');
INSERT INTO NILAI VALUES ('05541001', 'P1201', 'C');
INSERT INTO NILAI VALUES ('05541001', 'T1201', 'A');
INSERT INTO NILAI VALUES ('05541001', 'T2202', 'B');
INSERT INTO NILAI VALUES ('05541001', 'T1401', 'B');
INSERT INTO NILAI VALUES ('05541001', 'P2202', 'A');
INSERT INTO NILAI VALUES ('05541001', 'T3201', 'B');
INSERT INTO NILAI VALUES ('05541002', 'T1001', 'D');
INSERT INTO NILAI VALUES ('05541002', 'P1201', 'E');
INSERT INTO NILAI VALUES ('05541002', 'T1201', 'C');
INSERT INTO NILAI VALUES ('05541002', 'T2202', 'C');
INSERT INTO NILAI VALUES ('05541002', 'T1401', 'D');
INSERT INTO NILAI VALUES ('05541002', 'P2202', 'B');
INSERT INTO NILAI VALUES ('05541002', 'T3201', 'B');
Tabel MKULIAH
CREATE TABLE mkuliah (kd_mk char (5), char nm_kul (25), SKS int,
kunci primer (kd_mk));
INSERT INTO NILAI mkuliah ('T10001', 'Bahasa Inggris I', 2);
INSERT INTO mkuliah VALUES ('T10002', 'Bahasa Inggris II', 2);
INSERT INTO NILAI mkuliah ('TI2001', 'Kalkulus I', 3);
INSERT INTO NILAI mkuliah ('T22001', 'Kalkulus II', 3);
INSERT INTO NILAI mkuliah ('TI4001', 'Algoritma dan pemrogaman', 3);
INSERT INTO mkuliah VALUES ('T22002', 'Jaringan Komputer', 3);
INSERT INTO mkuliah VALUES ('T32001', 'Dasar Data', 3);
INSERT INTO NILAI mkuliah ('P12001', 'Prak Web Pemprogaman 1.', 1);
INSERT INTO NILAI mkuliah ('P22001', 'Prak Pemprogaman Web 2.', 1);
INSERT INTO NILAI mkuliah ('P12001', 'Prak Pemprogaman Dasar. ", 1);
No_mhs Nilai menapilkan = '05541001'
Nilai.no_mhs SELECT, nilai.kd_mk, mkuliah.nm_kul, nilai.nilai, mkuliah.sks
DARI Nilai, mkuliah
MANA nilai.kd_mk = mkuliah.kd_mk DAN nilai.no_mhs = '05541001'
mysql> menggunakan akademik;
Database berubah
mysql> SELECT nilai.no_mhs, nilai.kd_mk, mkuliah.nm_kul, nilai.nilai, mkuliah.sks
-> FROM Nilai, mkuliah
-> MANA nilai.kd_mk = mkuliah.kd_mk DAN nilai.no_mhs = '05541001';
+ ---------- + ------- + ------------------------- + ---- --- + ------ +
| No_mhs | kd_mk | nm_kul | Nilai | sks |
+ ---------- + ------- + ------------------------- + ---- --- + ------ +
| 05541001 | P1201 | Prak. Pemprogaman Dasar | C | 1 |
| 05541001 | P2202 | Prak. Pemprogaman Web 2 | A | 1 |
| 05541001 | T1001 | Bahasa Inggris I | A | 2 |
| 05541001 | T2202 | Kalkulus II | B | 3 |
| 05541001 | T3201 | Basis Data | B | 3 |
+ ---------- + ------- + ------------------------- + ---- --- + ------ +
5 rows in set (0.00 sec)
mysql>
Manampilkan trasnkip DENGAN Catatan Notes Nilai, SKS Dan Jangka Waktu Dan Catatan Notes
mysql> SELECT nilai.no_mhs, nilai.kd_mk, mkuliah.nm_kul, nilai.nilai, mkuliah.sks
-> KASUS KETIKA nilai.nilai = 'A' THEN mkuliah.sks * 4
-> KETIKA nilai.nilai = 'B' THEN mkuliah.sks * 3
-> KETIKA nilai.nilai = 'C' THEN mkuliah.sks * 2
-> KETIKA nilai.nilai = 'D' THEN mkuliah.sks * 1
-> ELSE 0
-> END Catatan Notes
-> FROM Nilai, mkuliah
-> MANA nilai.kd_mk = mkuliah.kd_mk DAN nilai.no_mhs = '05541001';
+ ---------- + ------- + ------------------------- + ---- --- + ------ + ------- +
| No_mhs | kd_mk | nm_kul | Nilai | sks | Catatan Notes |
+ ---------- + ------- + ------------------------- + ---- --- + ------ + ------- +
| 05541001 | P1201 | Prak. Pemprogaman Dasar | C | 1 | 2 |
| 05541001 | P2202 | Prak. Pemprogaman Web 2 | A | 1 | 4 |
| 05541001 | T1001 | Bahasa Inggris I | A | 2 | 8 |
| 05541001 | T2202 | Kalkulus II | B | 3 | 9 |
| 05541001 | T3201 | Basis Data | B | 3 | 9 |
+ ---------- + ------- + ------------------------- + ---- --- + ------ + ------- +
5 rows in set (0.00 sec)
mysql>
Menghitung IP
mysql> SELECT nilai.no_mhs, SUM (mkuliah.sks) jum_sks,
-> SUM (CASE WHEN nilai.nilai = 'A' THEN mkuliah.sks * 4
-> KETIKA nilai.nilai = 'B' THEN mkuliah.sks * 3
-> KETIKA nilai.nilai = 'C' THEN mkuliah.sks * 2
-> KETIKA nilai.nilai = 'D' THEN mkuliah.sks * 1
-> ELSE 0
-> END) sebagai jum_bobot
-> FROM Nilai, mkuliah
-> MANA nilai.kd_mk = mkuliah.kd_mk DAN nilai.no_mhs = '05541001';
+ ---------- + --------- + ----------- +
| No_mhs | jum_sks | jum_bobot |
+ ---------- + --------- + ----------- +
| 05541001 | 10 | 32 |
+ ---------- + --------- + ----------- +
1 baris dalam set (0.00 sec)
mysql>
Ip = jum_bobot / jum_sks
mysql> SELECT nilai.no_mhs, SUM (mkuliah.sks) jum_sks,
-> SUM (CASE WHEN nilai.nilai = 'A' THEN mkuliah.sks * 4
-> KETIKA nilai.nilai = 'B' THEN mkuliah.sks * 3
-> KETIKA nilai.nilai = 'C' THEN mkuliah.sks * 2
-> KETIKA nilai.nilai = 'D' THEN mkuliah.sks * 1
-> ELSE 0
-> END) sebagai jum_bobot,
-> SUM (CASE WHEN nilai.nilai = 'A' THEN mkuliah.sks * 4
-> KETIKA nilai.nilai = 'B' THEN mkuliah.sks * 3
-> KETIKA nilai.nilai = 'C' THEN mkuliah.sks * 2
-> KETIKA nilai.nilai = 'D' THEN mkuliah.sks * 1
-> ELSE 0
-> END) /SUM(mkuliah.sks) sebagai ip
-> FROM Nilai, mkuliah
-> MANA nilai.kd_mk = mkuliah.kd_mk DAN nilai.no_mhs = '05541001';
+ ---------- + --------- + ----------- + -------- +
| No_mhs | jum_sks | jum_bobot | ip |
+ ---------- + --------- + ----------- + -------- +
| 05541001 | 10 | 32 | 3,2000 |
+ ---------- + --------- + ----------- + -------- +
1 baris dalam set (0.00 sec)
mysql>
Prosedur Tersimpan manggunakan
MENCIPTAKAN Definer = `` @ root` localhost` PROSEDUR `get_transkrip` (in_no_mhs char (9))
BEGIN
SELECT nilai.no_mhs, nilai.kd_mk, mkuliah.nm_kul, nilai.nilai, mkuliah.sks,
KASUS KETIKA nilai.nilai = 'A' THEN mkuliah.sks * 4
KETIKA nilai.nilai = 'B' THEN mkuliah.sks * 3
KETIKA nilai.nilai = 'C' THEN mkuliah.sks * 2
KETIKA nilai.nilai = 'D' THEN mkuliah.sks * 1
ELSE 0
END Catatan Notes
DARI Nilai, mkuliah
MANA nilai.kd_mk = mkuliah.kd_mk DAN nilai.no_mhs = in_no_mhs
/ * Urut semerter * /
ORDER BY SUBSTR (nilai.kd_mk, 2,1);
END $$
DELIMITER;
MENCIPTAKAN Definer = `` @ root` localhost` PROSEDUR `get_ip` (in_no_mhs char (9))
BEGIN
SELECT nilai.no_mhs, SUM (mkuliah.sks) jum_sks,
SUM (CASE WHEN nilai.nilai = 'A' THEN mkuliah.sks * 4
KETIKA nilai.nilai = 'B' THEN mkuliah.sks * 3
KETIKA nilai.nilai = 'C' THEN mkuliah.sks * 2
KETIKA nilai.nilai = 'D' THEN mkuliah.sks * 1
ELSE 0
END) sebagai jum_bobot,
SUM (CASE WHEN nilai.nilai = 'A' THEN mkuliah.sks * 4
KETIKA nilai.nilai = 'B' THEN mkuliah.sks * 3
KETIKA nilai.nilai = 'C' THEN mkuliah.sks * 2
KETIKA nilai.nilai = 'D' THEN mkuliah.sks * 1
ELSE 0
END) /SUM(mkuliah.sks) sebagai ip
DARI Nilai, mkuliah
MANA nilai.kd_mk = mkuliah.kd_mk DAN nilai.no_mhs = in_no_mhs;
END $$
DELIMITER;
Daftar Pustaka
Steven Feuerstein, Guy Harrison, 2006, MySQL disimpan prosedur Programming, O'Reilly
1. Prosedur Tersimpan
Sejumlah Perintah Program hearts Kode Dan masukan parameter beberapa, Dan sejumlah hasil temuan ATAU Keluaran. Cara pemanggilannya DENGAN mengeksekusi nāma proscdure tersebut.
2. Disimpan Fungsi
Fungsi hampir sama DENGAN prosedur yang tersimpan. Fungsi mempunyai sejumlah Penyempitan masukan Dan Hanya mengembalikan Satu output, standar Perintah Yang digunakan menggunakan Perintah standar SQL.
Fungsi hampir sama DENGAN prosedur yang tersimpan. Fungsi mempunyai sejumlah Penyempitan masukan Dan Hanya mengembalikan Satu output, standar Perintah Yang digunakan menggunakan Perintah standar SQL.
3. Memicu
Program Suatu Yang akan melakukan respon hearts aktivitas basis data, berkaitan Perintah-Perintah DML (insert, update, delete) operasional pãda tabel. Biasanya digunakan UNTUK otomatisasi ATAU validasi.
Program Suatu Yang akan melakukan respon hearts aktivitas basis data, berkaitan Perintah-Perintah DML (insert, update, delete) operasional pãda tabel. Biasanya digunakan UNTUK otomatisasi ATAU validasi.
Pemrograman Disimpan Prosedure hearts MySQL.
Disimpan prosedur Adalah permasalah Kompleks Yang Cukup dibahas UNTUK, adapun Bagian Penting prosedur pãda disimpan:
Disimpan prosedur Adalah permasalah Kompleks Yang Cukup dibahas UNTUK, adapun Bagian Penting prosedur pãda disimpan:
Program Kapan akan diabut, parameter Yang dilewatkan akan artikel komersial Yang dikeluarkan, basis data hearts Interaksi, precedure disimpan menciptakan, fungsi fungsi Dan memicu hearts bahasa pemrograman.
Apa Yang Dibutuhkan?
• MySQL Server
• Teks Editor vi, emacs,
• MySQL Query Browser, SQLyog dll
• MySQL Server
• Teks Editor vi, emacs,
• MySQL Query Browser, SQLyog dll
Prosedur Tersimpan manciptakan
Beberapa Perintah UNTUK MEMBUAT disimpan prosedur:
CREATE PROSEDUR, CREATE FUNCTION, ATAU CREATE TRIGGER
Contoh:
DELIMITER $$
DROP PROSEDUR JIKA ada Kata () $$;
CREATE PROSEDUR Kata ()BEGIN
SELECT 'AKAKOM';
END $$
DELIMITER;
Cara memanggilanya:
Masukkan password: ****
Selamat datang di monitor MySQL. Perintah diakhiri dengan; . atau \ g
koneksi MySQL id adalah 2
versi Server: 6.0.4-alpha-komunitas-log MySQL Community Server (GPL)Ketik 'bantuan'; atau '\ h' untuk membantu. Ketik '\ c' untuk menghapus buffer.mysql> penggunaan coba;
Database berubah
mysql> HUBUNGI Kata ();
+ --- +
| AKAKOM |
+ --- +
| AKAKOM |
+ --- +
1 row in set (0.00 sec)Query OK, 0 rows affected (0.00 sec)mysql>
Variabel
Variabel dalam Bahasa SQL, fungsinya sama DENGAN bahasa pemrograman paxda umumnya.
Perintahnya menggunakan MENYATAKAN, Dan UNTUK memberikan Nilai menggunakan Perintah SET.
Perintahnya menggunakan MENYATAKAN, Dan UNTUK memberikan Nilai menggunakan Perintah SET.
Parameter
Parameter Adalah suatu Nilai yanga akan dilewatkan ATAU dimasukan UNTUK diproses hearts fungsi fungsi ATAU prosedure.
Parameter Adalah suatu Nilai yanga akan dilewatkan ATAU dimasukan UNTUK diproses hearts fungsi fungsi ATAU prosedure.
Contoh
DELIMITER $$
CREATE PROSEDUR Demo_Var ()
BEGIN
MENYATAKAN x int;
MENYATAKAN y int;
SET x = 10;
SET y = 20;
PILIH x + y;
END $$;
BEGIN
MENYATAKAN x int;
MENYATAKAN y int;
SET x = 10;
SET y = 20;
PILIH x + y;
END $$;
DELIMITER;
PANGGILAN Demo_var
Hasil
Hasil
+ - +
| x + y |
+ - +
| 30 |
+ - +
1 row in set (0.00 sec)
SEBUAH Prosedur DENGAN mengunakan parameter masukan, akan diproses hearts fungsi fungsi Dan kemudian timapilkan, hasilnya.
Contoh:
DELIMITER $$CREATE PROSEDUR my_akar (masukan INT)
BEGIN
MENYATAKAN hasil temuan FLOAT,
SET hasil temuan = SQRT (masukan),
hasil temuan SELECT,
END $$;DELIMITER;
Cara memanggil prosedur pengajian
PANGGILAN my_akar (25);
Hasil Keluaran Astra Honda Motor sebagai berikut:
mysql> PANGGILAN my_akar (25);
+ --- +
| hasil temuan |
+ --- +
| 5 |
+ --- +
1 baris dalam set (0,03 detik)Query OK, 0 rows affected (0.05 sec)
Prosedure menggunakan parameter masukan Dan Keluaran (INT Dan OUT)
Contoh:
Contoh:
DELIMITER $$CREATE PROSEDUR my_sqrt (masukan INT, FLOAT OUT nilai_keluar)
BEGIN
SET nilai_keluar = SQRT (masukan);
END $$;DELIMITER;
Cara menjalankan Prosedur ADA doa Tahap
PANGGILAN my_sqrt (9, @ out_value)out_value SELECT
Memampilkan Keluaran Nilai:
mysql> PANGGILAN my_akar (25);
+ --- +
| hasil temuan |
+ --- +
| 5 |
+ --- +
1 baris dalam set (0,03 detik)Query OK, 0 rows affected (0.05 sec)mysql> PANGGILAN my_sqrt (9 @ out_value);
Query OK, 0 rows affected (0.05 sec)mysql> SELECTout_value;
+ ---- +
|out_value |
+ ---- +
| 3 |
+ ---- +
Kondisional
Perintah kondisional, UNTUK melakukan uji Kondisi terapat Satu masukan Dan doa piliahan Dari Keluaran, Kondisi Benar ATAU asalah. Perintahnya menggunakan IF Ngayogyakarta KASUS.
DELIMITER $$CREATE PROSEDUR Diskon (Pembayaran NUMERIC (10,2), OUT Diskon NUMERIC (8,2))
BEGIN
IF (Pembayaran> 100000) THEN
SET Diskon = Pembayaran * 0,8;
ELSEIF (Pembayaran> 500000) THEN
SET Diskon = Pembayaran * 0,9;
ELSE
SET Diskon = Pembayaran;
END IF;
END $$;DELIMITER;
Cara memanggilnya:
mysql> PANGGILAN Diskon (100000, @ new_price);
Query OK, 0 rows affected (0.05 sec)mysql> SELECTnew_price;
+ ---- +
|new_price |
+ ---- +
| 100.000,00 |
+ ---- +
1 baris dalam set (0.00 sec)
Putaran
Lingkaran Adalah Proses perulangan. Dalam MYSQL ADA 3 jenis lingkaran:
• loop sederhana menggunakan LOOP Dan END LOOP c
• loop Yang Disertai Kontrol Kondisi Benar ATAU JIKA shalat Benar lingkaran akan, perintannya menggunakan sementara Dan END WHILE
Perulangan • Yang menggunakan reapeat Dan, sampai
• loop sederhana menggunakan LOOP Dan END LOOP c
• loop Yang Disertai Kontrol Kondisi Benar ATAU JIKA shalat Benar lingkaran akan, perintannya menggunakan sementara Dan END WHILE
Perulangan • Yang menggunakan reapeat Dan, sampai
Contoh:
DELIMITER $$
CREATE PROSEDUR Loop_sederhana ()
BEGIN
MENYATAKAN konter INT DEFAULT 0;
differences LOOP
SET konter konter = + 1;
IF konter = 10 THEN
TINGGALKAN differences;
END IF;
SELECT konter;
END LOOP differences;
PILIH 'Konter to 10';
END $$;DELIMITER;
TINGGALKAN UNTUK mangarah to differences label.
Interaktif DENGAN database
Disimpan Prosedure JUGA basi melibatkan Data hearts tabel. Ada 4 tipe Bagian Interaksi ANTARA lian:
SELECT INTO Menggunakan Variabel Lokal
Dalam prosedur tersimpan seperti halnya pemroraman biasa, Terdapat variabel Lokal, Yaitu variabel Yang menampung data yang & e. UNTUK mengisikan Nilai variabel tersebut DENGAN Perintah INTO
Dalam prosedur tersimpan seperti halnya pemroraman biasa, Terdapat variabel Lokal, Yaitu variabel Yang menampung data yang & e. UNTUK mengisikan Nilai variabel tersebut DENGAN Perintah INTO
Contoh:
Buatalah tabel JUALAN
CREATE TABLE JUALAN (char no_tran (5),
kd_plg char (5),
tanggal tgl,
nil_tran int);Rekaman Jumlah Harga: TambahkanINSERT INTO JUALAN VALUES ('00001', 'P0001', '2009/07/10', 4000000);
INSERT INTO JUALAN VALUES ('00002', 'P0001', '2009/07/11', 5000000);
INSERT INTO NILAI JUALAN ('00003', 'P0002', '2009/07/11', 700000);
INSERT INTO NILAI JUALAN ('00004', 'P0003', '2009/09/10', 4030000);
Prosedur Tersimpan Menciptakan
DELIMITER $$DROP PROSEDUR JIKA ada pelanggan_jualan;
$$CREATE PROSEDUR pelanggan_jualan (in_kd_plg char (5))
BEGIN
DECLARE Total_jual INT;SELECT SUM (nil_tran) KE Total_jual
DARI JUALAN
MANA kd_plg = in_kd_plg;
SELECT concate ('Jangka Waktu Transaksi Pelanggan No,:', in_kd_plg, 'Adalah =', Total_jual);
END;
$$
Penjelasan
• DELIMITER: Awal skrip
• DROP PROSEDUR JIKA ada: cara menghapus JIKA prosedure pelanggan_jualan ADA, Jika tidak diabaikan.
• BEGIN: Awal blok Perintah (Proses)
• MENYATAKAN Total_jual INT: bagian Deklarasi variabel
• DROP PROSEDUR JIKA ada: cara menghapus JIKA prosedure pelanggan_jualan ADA, Jika tidak diabaikan.
• BEGIN: Awal blok Perintah (Proses)
• MENYATAKAN Total_jual INT: bagian Deklarasi variabel
• SUM SELECT (nil_tran) KE Total_jual DARI JUALAN MANA kd_plg = in_kd_plg; : Perintah SQL menpilkan
• SELECT concate ('Jangka Waktu Transaksi Pelanggan No,:', in_kd_plg, 'Adalah =', Total_jual); : Hasil temuan ditampilkan kelayar DENGAN keterangannya
• SELECT concate ('Jangka Waktu Transaksi Pelanggan No,:', in_kd_plg, 'Adalah =', Total_jual); : Hasil temuan ditampilkan kelayar DENGAN keterangannya
• END; Akhir Dari blok Proses
Melibatkan Tabel
DELIMITER $$
DROP PROSEDUR JIKA ADA cari;
$$
CREATE PROCEDURE cari (in_no_mhs char (9))
BEGIN
no_mhs SELECT, nama, alamat, agama
DARI MHS
MANA no_mhs = in_no_mhs;
END;
$$
MENCIPTAKAN Definer = `` @ root` localhost` PROSEDUR `get_transkrip` (in_no_mhs char (9))
BEGIN
SELECT nilai.no_mhs, nilai.kd_mk, mkuliah.nm_kul, nilai.nilai, mkuliah.sks,
KASUS KETIKA nilai.nilai = 'A' THEN mkuliah.sks * 4
KETIKA nilai.nilai = 'B' THEN mkuliah.sks * 3
KETIKA nilai.nilai = 'C' THEN mkuliah.sks * 2
KETIKA nilai.nilai = 'D' THEN mkuliah.sks * 1
ELSE 0
END Catatan Notes
DARI Nilai, mkuliah
MANA nilai.kd_mk = mkuliah.kd_mk DAN nilai.no_mhs = in_no_mhs
/ * Urut semerter * /
ORDER BY SUBSTR (nilai.kd_mk, 2,1);
END $$
DELIMITER;
MENCIPTAKAN Definer = `` @ root` localhost` PROSEDUR `get_ip` (in_no_mhs char (9))
BEGIN
SELECT nilai.no_mhs, SUM (mkuliah.sks) jum_sks,
SUM (CASE WHEN nilai.nilai = 'A' THEN mkuliah.sks * 4
KETIKA nilai.nilai = 'B' THEN mkuliah.sks * 3
KETIKA nilai.nilai = 'C' THEN mkuliah.sks * 2
KETIKA nilai.nilai = 'D' THEN mkuliah.sks * 1
ELSE 0
END) sebagai jum_bobot,
SUM (CASE WHEN nilai.nilai = 'A' THEN mkuliah.sks * 4
KETIKA nilai.nilai = 'B' THEN mkuliah.sks * 3
KETIKA nilai.nilai = 'C' THEN mkuliah.sks * 2
KETIKA nilai.nilai = 'D' THEN mkuliah.sks * 1
ELSE 0
END) /SUM(mkuliah.sks) sebagai ip
DARI Nilai, mkuliah
MANA nilai.kd_mk = mkuliah.kd_mk DAN nilai.no_mhs = in_no_mhs;
END $$
DELIMITER;
Komentar
Posting Komentar