© Ilmu Komputer UGM Stored Function
© Ilmu Komputer UGM Stored Function Dapat memiliki parameter input, tetapi tidak memiliki parameter output Stored function tersebut adalah parameter outputnya Setelah berhasildibuat maka dapat dipanggil seperti memanggil fungsi-fungsi standart Stored fuction harus memiliki statement RETURN
© Ilmu Komputer UGM
© Ilmu Komputer UGM
© Ilmu Komputer UGM CREATE FUNCTION NUMBER_OF_DAYS (START_DATE DATE, END_DATE DATE) RETURNS INTEGER BEGIN DECLARE DAYS INTEGER; DECLARE NEXT_DATE, PREVIOUS_DATE DATE; SET DAYS = 0; SET NEXT_DATE = START_DATE + INTERVAL 1 DAY; WHILE NEXT_DATE <= END_DATE DO SET DAYS = DAYS + 1; SET PREVIOUS_DATE = NEXT_DATE; SET NEXT_DATE = NEXT_DATE + INTERVAL 1 DAY; END WHILE; RETURN DAYS; END
© Ilmu Komputer UGM Latihan Buat fungsi untuk mengkonversi harga barang ke rupiah. Buat fungsi untuk menghitung jumlah barang yang sudah terjual. Buat fungsi untuk menghitung jumlah transaksi sebuah nomor transaksi. Buat fungsi untuk menghitung jumlah /nilai seorang customer.
© Ilmu Komputer UGM Trigger Trigger adalah sekumpulan kode program yang terdiri dari statemen prosedural dan deklarasi yang tersimpan dalam katalog dan diaktifkan oleh server database pada event tertentu Event yang dapat memicu, misal : –Penambahan data baru –Update data –Penghapusan
© Ilmu Komputer UGM Dalam trigger kita bisa menggunakan : –OLD.namakolom mengembalikan nama kolom lama sebelum terjadi perubahan / penghapusan –NEW.namakolom mengembalikan nama kolom baru setelah terjadi pemasukan/perubahan
© Ilmu Komputer UGM USE test CREATE TABLE test (id SERIAL, percent DOUBLE) DELIMITER // CREATE TRIGGER test_before_insert BEFORE INSERT ON test FOR EACH ROW BEGIN IF NEW.percent 1.0 THEN SET NEW.percent = NULL; END IF; END// CREATE TRIGGER test_before_update BEFORE UPDATE ON test FOR EACH ROW BEGIN IF NEW.percent 1.0 THEN SET NEW.percent = NULL; END IF; END// DELIMITER ;
© Ilmu Komputer UGM CREATE TRIGGER DELETE_ORDERS AFTER DELETE ON ORDERS FOR EACH ROW BEGIN DELETE FROM `ORDER DETAILS` WHERE ORDERID = OLD.ORDERID; END
CREATE FUNCTION customers_for_rep(in_rep_id INT) RETURNS INT READS SQL DATA BEGIN DECLARE customer_count INT; SELECT COUNT(*) INTO customer_count FROM customers WHERE sales_rep_id=in_rep_id; RETURN(customer_count); END; © Ilmu Komputer UGM
CREATE FUNCTION cust_status(IN in_status CHAR(1)) RETURNS VARCHAR(20) BEGIN DECLARE long_status VARCHAR(20); IF in_status = 'O' THEN SET long_status='Overdue'; ELSEIF in_status = 'U' THEN SET long_status='Up to date'; ELSEIF in_status = 'N' THEN SET long_status='New'; END IF; RETURN(long_status); END; © Ilmu Komputer UGM