当前位置:操作系统 > Unix/Linux >>

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

帮你快速理解存储函数、存储过程、触发器
 
一、创建存储过程
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);
 
在插入之前执行
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,