• 存储过程/存储函数


    区别:存储过程没有返回值,  存储函数有返回值(他们都可以通过out参数输出返回值,所以这句话到后边就不太对了)

    存储过程和存储函数现在已经是一回事了,只是老版本的数据库里两者有区分,为了兼容老版本所以还分开称呼

    一,存储过程

     1,打印Hello World:没有参数的存储过程,名字后不带()

    create or replace procedure sayhello as
    begin
      dbms_output.put_line('Hello!');
    end;

    2,带参数的存储过程,不commit事物,水调用谁commit (in:输入参数,out 输出参数)

    create or replace procedure raiseSalary(eno in number)
    as
      --变量
      psal emp2.sal%type;
    begin
      --得到涨薪前的工资
      select sal into psal from emp2 where empno=eno;
    
      --涨工资
      update emp2 set sal=sal+100 where empno=eno;
    
      --此处不用commit ,谁调用谁commit
    
      --打印
      dbms_output.put_line('涨工资前薪水:'||psal||',涨工资后薪水:'||(psal+100));
    
    end;

    调用时候提交事物 commit

    二、存储函数

    例子一:查询某个员工的年薪

    create or replace function queryEmpImcome(eno in number)
    return number
    as
    
      --变量
      psal emp.sal%type;
      pcomm emp.comm%type;
    begin
      select sal,comm into psal,pcomm from emp where empno=eno;
      return (psal+nvl(pcomm,0))*12;
    
    end;

    过程和函数中的in 、out 参数

    所以现在意义上,过程和函数就是一回事

    例子:查询某个员工的姓名、薪水、工种,  使用存储过程实现

    /*
     查询某个员工的姓名,薪水,职位  
    */
    create or replace procedure queryEmpInfo(eno in number,
                                   pename out varchar2,
                                   psal out number,
                                   pjob out varchar2) 
    as
    
    begin
      select ename,sal,job into pename,psal,pjob from emp where empno=eno;                        
    end;

    plsql测试:

    选择存储过程、还是存储函数?

     

  • 相关阅读:
    C版程序语法 (消除左递归)
    文法
    201506110248 实验报告
    组合数据类型
    UBUNTU四种版本的区别【转】
    MFC对话框程序屏蔽回车与ESC键,Tab键
    std::fstream打开中文路径名失败的问题原因、解决方法以及注意事项
    前进。。。。。。
    程序员学习能力提升三要素[转]
    java学习推荐资源
  • 原文地址:https://www.cnblogs.com/lihaoyang/p/8670919.html
Copyright © 2020-2023  润新知