mirror of
https://github.com/KevinMidboe/linguist.git
synced 2025-12-08 20:38:47 +00:00
update of old PL/SQL PLpgSQL and SQLPL patch based on current version
see [linguist] add support for oracle PLSQL (#1003)
This commit is contained in:
30
samples/SQLPL/comm_amount.db2
Normal file
30
samples/SQLPL/comm_amount.db2
Normal file
@@ -0,0 +1,30 @@
|
||||
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;
|
||||
Reference in New Issue
Block a user