zoukankan      html  css  js  c++  java
  • PostgreSQL基础整理(二)

    存储过程

    实现功能:针对工资表30岁以下,工资提升10% 30至40提升20% 40以上提升30% + 奖金(入参)返回平均薪酬

    • 创建表:
    DROP TABLE emps;
    CREATE TABLE emps(userid int PRIMARY KEY, age int, salary numeric );
    INSERT INTO emps VALUES(10, 25, 1000.0),(11, 26, 1500.0),(12, 27, 1300.0),(13, 35, 3000.0), (14, 45, 4000.0);
    • 创建存储过程:
        DROP FUNCTION IF EXISTS add_salary(_bonus numeric );
        CREATE OR REPLACE FUNCTION add_salary(_bonus numeric )
        RETURNS numeric AS $body$
        
        DECLARE
            level1 numeric  := 30;
            level2 numeric  :=40;
            res numeric  := 0;
            page int;
            puserid int;
            mycursor refcursor ;
             
        
            BEGIN
                OPEN mycursor FOR SELECT userid, age FROM emps; 
                FETCH mycursor INTO puserid, page;
                RAISE NOTICE 'age is :----%',puserid||','||page;
                WHILE FOUND LOOP
                    IF  page <= level1 
                    THEN
                        UPDATE emps SET salary = salary * 1.1 WHERE userid = puserid;
                    ELSIF  page > level1 AND page <= level2 
                    THEN
                        UPDATE emps SET salary = salary*1.2 WHERE userid = puserid;
                    ELSE
                        UPDATE emps SET salary = salary*1.3 WHERE userid = puserid;
                    END IF;        
                    
                    FETCH mycursor INTO puserid, page;
                    
                END LOOP;
                
                    SELECT AVG(SALARY) FROM emps INTO res;
                    RETURN res;
            END
        $body$
        Language plpgsql;
    • 执行结果

  • 相关阅读:
    C++总结
    Perl注释格式
    处理压力测试中的问题
    C++标准库中的时间函数
    C语言中如何使用宏 转载
    探索C++的秘密之详解extern "C"
    调试代码的技巧
    又长一岁
    [转]pycharm的一些快捷键
    dizhi
  • 原文地址:https://www.cnblogs.com/Fredric-2013/p/4653624.html
Copyright © 2011-2022 走看看