ITPub博客

首页 > 数据库 > 数据库开发技术 > 29

29

原创 数据库开发技术 作者:simkyo 时间:2013-11-28 10:28:03 0 删除 编辑
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/ ,如需转载,请注明出处,否则将追究法律责任。

上一篇: 28
下一篇: 30
请登录后发表评论 登录
全部评论

注册时间:2013-06-20

  • 博文量
    193
  • 访问量
    165522