zoukankan      html  css  js  c++  java
  • 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;

    /

  • 相关阅读:
    常见协议及默认的端口号
    超级简单的防止表单重复提交
    Spring的IOC和AOP的作用
    通向财富自由之路一
    AngularJS2.0的特性
    Charles设置断点
    JMeter参数化之csv data set config常见的错误
    Jmeter的几种参数化方式
    java中关于String对象的解析
    题目2:数组中重复的数字
  • 原文地址:https://www.cnblogs.com/shanshanliu/p/6270426.html
Copyright © 2011-2022 走看看