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

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

一、创建存储过程

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);

 

在插入之前执行

你可能感兴趣的:(帮你快速理解存储函数、存储过程、触发器)