Files
linguist/samples/SQLPL/comm_amount.db2
David Pyke Le Brun 3e54d6651c update of old PL/SQL PLpgSQL and SQLPL patch based on current version
see [linguist] add support for oracle PLSQL (#1003)
2015-02-06 13:36:40 +00:00

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;