mirror of
https://github.com/KevinMidboe/linguist.git
synced 2025-10-29 09:40:21 +00:00
31 lines
854 B
Plaintext
31 lines
854 B
Plaintext
DROP FUNCTION COMM_AMOUNT;
|
|
CREATE FUNCTION COMM_AMOUNT(SALARY DEC(9,2))
|
|
RETURNS DEC(9,2)
|
|
LANGUAGE SQL READS SQL DATA
|
|
BEGIN ATOMIC
|
|
DECLARE REMAINDER DEC(9,2) DEFAULT 0.0;--
|
|
DECLARE COMM_PAID DEC(9,2) DEFAULT 0.0;--
|
|
DECLARE COMM_INCR INT DEFAULT 1;--
|
|
DECLARE MAX_COMM DEC(9,2) DEFAULT 0.0;--
|
|
|
|
IF (SALARY <= 0) THEN
|
|
SIGNAL SQLSTATE '75000'
|
|
SET MESSAGE_TEXT = 'Bad Salary';--
|
|
END IF;--
|
|
|
|
SET REMAINDER = SALARY;--
|
|
|
|
L1: WHILE REMAINDER > 0.0 DO
|
|
SET COMM_PAID = COMM_PAID + (COMM_INCR * 500.00);--
|
|
SET REMAINDER = REMAINDER-(COMM_INCR * 5000.00);--
|
|
SET COMM_INCR = COMM_INCR + 1;--
|
|
END WHILE L1;--
|
|
|
|
SET MAX_COMM =
|
|
(SELECT SUM(SALARY)/100.00 FROM EMPLOYEE);--
|
|
IF (COMM_PAID > MAX_COMM) THEN
|
|
SET COMM_PAID = MAX_COMM;--
|
|
END IF;--
|
|
RETURN COMM_PAID;--
|
|
END;
|