zoukankan      html  css  js  c++  java
  • 存储过程和存储函数和触发器示例

    1、存储过程示例:为指定的职工在原工资的基础上长10%的工资

    SQL> create or replace procedure raiseSalary(empid in number)
     
        as
     
        pSal emp.sal%type;
     
        begin
     
        select sal into pSal from emp where empno=empid;
     
        update emp set sal = sal*1.1 where empno=empid;
     
        dbms_output.put_line('员工号:' || empid || '涨工资前
     
        ' || psal || '涨工资后' || psal*1.1);
     
        end;
     
       /
     
    Procedure created
     
    SQL> set serveroutput on
     
    SQL> exec raisesalary(7369);

    员工号:7369涨工资前

    800涨工资后880

    PL/SQL procedure successfully completed

    2、存储函数示例:查询某职工的年收入。

    SQL> /**   查询某职工的总收入   */

    create or replace function queryEmpSalary(empid in number)
     
        return number
     
        as
     
        pSal number; --定义变量保存员工的工资
     
        pComm number; --定义变量保存员工的奖金
     
       begin
     
       select sal,comm into psal,pcomm from emp where empno = empid;
     
       return psal*12+nvl(pcomm,0);
     
       end;
     
       /
     
    Function created
     
    SQL> declare
     
        v_sal number;
     
        begin
     
        v_sal:=queryEmpSalary(7934);
     
        dbms_output.put_line('salary is:'|| v_sal);
     
        end;
     
        /
     
    salary is:15600
     
    PL/SQL procedure successfully completed
     
    SQL> begin
     
        dbms_output.put_line('salary is:'|| queryEmpSalary(7934));
     
        end;
     
        /
     
    salary is:15600
     
    PL/SQL procedure successfully completed

    3、创建触发器示例1:限制非工作时间向数据库插入数据

    SQL> create or replace
     
        trigger securityEmp
     
        before insert on emp
     
        declare
     
        begin
     
        if to_char(sysdate,'day')in('星期四','星期六','星期日')
     
        or to_number(to_char(sysdate,'hh24'))not between 8 and 18 then 
     
        raise_application_error(-20001,'不能在非工作时间插入数据。');
     
        end if;
     
       end;
     
       /
     
    Trigger created

    4、创建触发器示例2:确认数据(检查emp表中sal 的修改值不低于原值)

    SQL> create or replace trigger checkSal
     
        before update of sal on emp
     
        for each row
     
        declare
     
        begin
     
        if :new.sal<:old.sal then
     
        raise_application_error(-20001,'更新后的薪水比更新前小');
     
        end if;
     
        end;
     
       /
     
    Trigger created
  • 相关阅读:
    字符编码、文件处理
    列表、字典、元祖、集合
    数字类型、字符串、列表
    学习python的第一天作业
    python基础day2-函数基础2,2019-6-25
    python基础day2-函数基础,2019-6-25
    python基础day2-文件处理,2019-6-25
    python基础day2-流程控制,2019-6-25
    python基础day2-字典类型已内置方法,2019-6-25
    python基础day2-可变类型与不可变类型,2019-6-25
  • 原文地址:https://www.cnblogs.com/smart9595/p/3818202.html
Copyright © 2011-2022 走看看