SET v_err = 'Error:employee'||p_empid||'was not found';
IF v_name IS NULL THEN
SIGNAL SQLSTATE '80000' SET message_text = v_err;
END IF;
RETURN v_name;
END;
存储过程
DROP PROCEDURE DB2ADMIN.TOTAL_RAISE (DECIMAL (), DECIMAL (), DECIMAL ());
CREATE PROCEDURE total_raise(IN p_min DEC(4,2),
IN p_max DEC(4,2),
OUT p_total DEC(9,2))
LANGUAGE SQL
SPECIFIC total_raise
BEGIN
DECLARE v_salary DEC(9,2);
DECLARE v_bonus DEC(9,2);
DECLARE v_raise DEC(4,2);
DECLARE v_job VARCHAR(15) DEFAULT 'PRES';
DECLARE SQLSTATE CHAR(5);
DECLARE c_emp CURSOR FOR
SELECT salary,BONUS FROM EMPLOYEE WHERE JOB != v_job;
OPEN c_emp;
SET p_total = 0;
FETCH FROM c_emp INTO v_salary,v_bonus;
WHILE (SQLSTATE = '00000') DO
SET v_raise = p_min;
IF (v_salary < 30000) THEN
SET v_raise = v_raise + 0.04;
END IF;
IF (v_raise > p_max) THEN
SET v_raise = p_max;
END IF;
SET p_total = p_total + v_salary*v_raise;
FETCH FROM c_emp INTO v_salary,v_bonus;
END WHILE;
CLOSE c_emp;
END;
开始-运行-db2cw-db2-connect to sample user db2admin using '1qaz!QAZ'-CALL TOTAL_RAISE(0.05,0.1,?)
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/12961536/viewspace-1061386/
,如需转载,请注明出处,否则将追究法律责任。