您现在的位置: 爱51代码网 >> 范文 >> 文章正文
快速理解存储函数、存储过程、触发器

快速理解存储函数、存储过程、触发器

存储过程、存储函数、触发器

一、创建存储过程

1、创建存储过程

create procedure isertEmp as

   begin

    insert into emp values(9888,'www','SDF',null,null,null,500,20);

    commit;

    end;

   /

2、创建或替换存储过程

create or replace procedure isertEmp as

   begin

    insert into emp values(9888,'www','SDF',null,null,null,500,20);

    commit;

    end;

   /

3、存储过程的案例

--存储过程的案例

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;

    /

4、存储过程的调用

--存储过程的调用

方法一:

SQL> set serveroutput on;--打开服务

SQL> begin

    raiseSalary(7521);

    end;

    /

 

员工号:7521涨工资前1250涨工资后1375

 

PL/SQL procedure successfully completed

方法二:

SQL> set serveroutput on;

SQL> exec raiseSalary(7521);

 

员工号:7521涨工资前1375涨工资后1512.5

 

PL/SQL procedure successfully completed

二、存储函数

1、创建存储函数

create function querySal(cno in number)

    return number

    as

    psal number;

    pcomm number;

    begin

    select sal,comm into psal,pcomm from emp where empno=cno;

    return psal*12+pcomm;

    end;

   /

2、创建或替换存储函数

create or replace function querySal(cno in number)

    return number

    as

    psal number;

    pcomm number;

    begin

    select sal,comm into psal,pcomm from emp where empno=cno;

    return psal*12+pcomm;

    end;

   /

3、案例

create or replace function queryEmpSalary(empid in number)

    return number

    as

    pComm number;

    pSal number;

    begin

    select sal,comm into pSal,pComm from emp where empno=empid;

    return pSal*12+pComm;

    end;

   /

4、函数的调用

如果你某个字段为空,但是你想让这个字段显示0nvl(字段名,0),就是当你选出来的时候,这个字段虽然为空,但是显示的是0

declare

    v_sal number;

    begin

    v_sal:=queryEmpSalary(7521);

    dbms_output.put_line('salary is:' || v_sal);

    end;

    /

 

salary is:18650

三、触发器

1、创建触发器

create or replace trigger tig

    before insert on emp

    begin

    dbms_output.put_line('在插入之前执行');

    end;

    /

 

Trigger created

2、触发器的效果

 insert into emp values(1234,'hhh','ASD',null,null,null,1200,40);

  • 上一篇文章:

  • 下一篇文章: 没有了
  • 最新文章 热点文章 相关文章
    sharepoint 2010 获取用户信息Us
    设计包含max函数的队列
    随机从数组中取出指定的不重复的
    mysql主从同步延迟方案解决的学习
    青岛科学六年级下册教材分析
    生日旅行总结
    中小板生日快乐随感
    送生日快乐桑葚乳酪小蛋糕
    写给女儿的生日快乐
    总分公司财务核算
    mysql主从同步延迟方案解决的学习
    生日旅行总结
    中小板生日快乐随感
    送生日快乐桑葚乳酪小蛋糕
    写给女儿的生日快乐
    总分公司财务核算
    恢复使用繁体字可行性研究报告
    保险受益人制度相关问题的探讨
    初中生地理读图能力培养的研究
    搞笑生日祝福
    Hibernate性能优化
    使用PL/SQL连接别人的Oracle
    ISP在线编程功能的问题
    2440用LVDS传输时,屏闪烁
    windows上的MFC程序向window
    NtMapViewOfSection防止DLL注
    synchronized和java.util.co
    Java中的异常处理机制的简单
    final, finally, finalize的
    java try {}里有一个return语
     



    设为首页 | 加入收藏 | 网站地图 | 友情链接 |