Loading...
Monday, December 16, 2013

Contoh Query Function dan Procedure di MySQL(SQLyog)

1. Query untuk Menghitung Umur
DELIMITER //
DROP PROCEDURE IF EXISTS umur_sekarang//
CREATE PROCEDURE umur_sekarang(IN lahir DATE, OUT umur TEXT)

BEGIN
SET umur=
IF(MONTH(lahir)=MONTH(NOW()),(
IF(DAY(lahir)=DAY(NOW()),CONCAT((YEAR(NOW())-YEAR(lahir)),' tahun ',
(MONTH(NOW())-MONTH(lahir)),' bulan ',(DAY(NOW())-DAY(lahir)),' hari '),
IF(DAY(lahir)<DAY(NOW()),CONCAT((YEAR(NOW())-YEAR(lahir)),' tahun ',
(MONTH(NOW())-MONTH(lahir)),' bulan ',(DAY(NOW())-DAY(lahir)),' hari '),
CONCAT(((YEAR(NOW())-YEAR(lahir))-1),' tahun ',(12-1), ' bulan ',
ABS((SELECT DATEDIFF(CONCAT(YEAR(NOW()),'-',MONTH(lahir)-1,'-',
DAY(lahir)),NOW()))),' hari ')))),

IF (MONTH(lahir)<MONTH(NOW()),(
IF(DAY(lahir)=DAY(NOW()),CONCAT((YEAR(NOW())-YEAR(lahir)),' tahun ',
(MONTH(NOW())-MONTH(lahir)),' bulan ',(DAY(NOW())-DAY(lahir)),' hari '),
IF(DAY(lahir)<DAY(NOW()),CONCAT((YEAR(NOW())-YEAR(lahir)),' tahun ',
(MONTH(NOW())-MONTH(lahir)),' bulan ',(DAY(NOW())-DAY(lahir)),' hari '),
CONCAT(((YEAR(NOW())-YEAR(lahir))),' tahun ',
((MONTH(NOW())-MONTH(lahir))-1), ' bulan ',ABS((SELECT DATEDIFF(CONCAT(YEAR(NOW()),'-',
MONTH(NOW())-1,'-', DAY(lahir)),NOW()))),' hari ')))),

IF (DAY(lahir)=DAY(NOW()),CONCAT(((YEAR(NOW())-YEAR(lahir))-1),' tahun ',
(12-(MONTH(lahir)-MONTH(NOW()))),' bulan ',(DAY(NOW())-DAY(lahir)),' hari '),
IF(DAY(lahir)<DAY(NOW()),CONCAT(((YEAR(NOW())-YEAR(lahir))-1),' tahun ',
(12-(MONTH(lahir)-MONTH(NOW()))),' bulan ',(DAY(NOW())-DAY(lahir)),' hari '),
CONCAT(((YEAR(NOW())-YEAR(lahir))),' tahun ',((MONTH(NOW())-MONTH(lahir))-1),
' bulan ',ABS((SELECT DATEDIFF(CONCAT(YEAR(NOW()),'-',MONTH(NOW())-1,'-',
DAY(lahir)),NOW()))),' hari ')))));

END//

SET @umur = '';
SET @lahir = '1994-08-09';
CALL umur_sekarang(@lahir,@umur);
SELECT (@umur) AS Umur_Sekarang;
========================================================================

2. Query untuk Penggunaan IF .... THAN
DELIMITER //

DROP FUNCTION IF EXISTS aritmatika//

CREATE FUNCTION aritmatika(var1 INT, var2 INT,var3 CHAR(1)) RETURNS FLOAT

BEGIN
DECLARE hasil FLOAT DEFAULT 0;
IF var3='+' THEN
SET hasil= var1 + var2;

ELSEIF var3='-' THEN
SET hasil= var1 - var2;

ELSEIF var3='/' THEN
SET hasil= var1 / var2;

ELSEIF var3= '*' THEN
SET hasil= var1*var2;
END IF;
RETURN hasil;
END//

SELECT aritmatika(5,2,'/') AS Hasil;
========================================================================

3. Query Penggunaan CASE
DELIMITER //

DROP FUNCTION IF EXISTS aritmatika//

CREATE FUNCTION aritmatika(var1 INT, var2 INT,var3 CHAR(1)) RETURNS FLOAT

BEGIN
DECLARE hasil FLOAT DEFAULT 0;
CASE var3
WHEN '+' THEN SET hasil= var1 + var2;

WHEN '-' THEN SET hasil= var1 - var2;

WHEN '/' THEN SET hasil= var1 / var2;

WHEN '*' THEN SET hasil= var1*var2;
END CASE;
RETURN hasil;
END//

SELECT aritmatika(5,2,'/') AS Hasil;
========================================================================

4. Query untuk Menghitung Jumlah Vokal dengan FIND IN SET
DELIMITER //

DROP FUNCTION IF EXISTS karakter//
CREATE FUNCTION karakter(input VARCHAR(255)) RETURNS INT

BEGIN
DECLARE hasil INT DEFAULT 0;
SET @jumlah = LENGTH(input);
SET @i= 0;

WHILE @i <= @jumlah DO
IF (FIND_IN_SET(RIGHT(LEFT(input,@i),1),'a,A,i,I,u,U,e,E,o,O')) THEN
SET hasil = hasil+1;
END IF;
SET @i= @i+1;
END WHILE;
RETURN hasil;
END//

SELECT karakter('Saya Belajar BDLAA') AS Hasil;
========================================================================

SEKIAN HARI INI SEMOGA BERMANFAAT

1 comments:

 
TOP