• oracle存储过程和自定义函数


    如果只有一个返回值就用存储函数,否则,就用存储过程

    存储过程存储函数都是存储在数据库中供所有用户程序调用的子程序。他们的区别就在于是否用return 语句返回值

    存储过程:

    --创建一个带参数的存储过程

    --给指定的员工涨100块的工资,并且打印涨前和涨后的工资

    CREATE OR REPLACE PROCEDURE SALARY (inno IN NUMBER,inzhang in number,zongshu out number )

    AS

    PSAL EMP.SAL%TYPE;--定义一个变量存储涨前的薪资

    BEGIN

    select sal into psal from emp where no = inno;--得到员工涨工资前的

    update emp set sal = sal+ inzhang  where no = inno;--给员工涨工资
    commit;
    select sal into zongshu from emp where no = inno;
    dbms_output.put_line('涨前:'||psal||'涨后:'||(psal+inzhang));

     END;

    调用该存储过程:

    declare
    inno number;
    inzhang number;
    zongshu number;
    begin
      inno :=3;
      inzhang :=10;
      salary(inno,inzhang,zongshu);
    end; 

    存储函数:

    语法:CREATE OR REPLACE FUNCTION 函数名(参数列表)

             return 函数值类型;

             as 

             PLSQL子程序体;

    --存储函数:查询某个员工的年收入

    CREATE OR REPLACE FUNCTION CHAXUN(inno in number)

    return number

    as

     psal emp.sal%type;--存放工资

     pcomm emp.comm%type;--存放奖金

    begin

    select sal,comm into psal,pcomm from emp where inno = no;--获取薪水和奖金

    return psal*12+nvl( pcomm,0);   --函数与过程的结构类似,但是必须要有一个return子句,用来返回函数值

    end:

    /

    in和out参数:过程和函数都可以通过out 指定一个或者是多个输出参数,我们可以利用out参数,在过程和函数中直线返回多个值。

    --out参数实现查询员工姓名,月薪和职位

    CREATE OR REPLACE PROCEDURE CHAXUNDUOGE (INNO IN NUMBER;OUTNAME OUT CHAR(12);OUTSAL OUT CHAR(12);OUTJOB OUT CHAR(20))

    AS

    begin

    select  name,sal,job into OUTNAME,OUTSAL,OUTJOB from emp where no = inno;

    end;

    /

  • 相关阅读:
    matrix
    meizi
    公文流转系统
    10.21连接数据库进行添加
    9.27
    9.23课堂总结
    信息管理java
    大道至简读后感
    第二周
    7.7第一周
  • 原文地址:https://www.cnblogs.com/shanshanliu/p/6270426.html
Copyright © 2020-2023  润新知