ITPub博客

首页 > 数据库 > Oracle > Oracle函数的确定性

Oracle函数的确定性

原创 Oracle 作者:zhenghaishu 时间:2014-08-06 17:29:26 0 删除 编辑
Oracle函数的确定性

(1) 概念
函数的确定性就是输入相同的一个参数,返回的结果总是相同的。函数的确定性,在于可以根据函数名和参数来缓存执行结果。Oracle在第二次输入该参数时,会直接拿第一次的结果,不再重复执行该函数,从而提高效率。

(2) 应用场景
对于scott用户emp表中的员工薪资,如果薪资高于或等于2000,返回1;如果薪资低于2000,返回0。

(3) 函数编写
create or replace function get_sal_grade(salary number) return number deterministic as
begin
  declare grade number;
  begin
    grade := salary - 2000;
    if grade < 0 then
      return 0;
    end if;
      return 1;
  end;
end get_sal_grade;
/

上述函数的第一行中加入deterministic关键字,表明所创建的函数具有确定性。

(4) 函数调用
SMITH的工资为800,得到的结果应为0。
declare salary number;
begin
  salary := 800;
  dbms_output.put_line('SMITH''s salary grade is ' || get_sal_grade(salary));
end;
/

运行结果:
SMITH's salary grade is 0
PL/SQL procedure successfully completed.


KING的工资为5000,得到的结果应为1。
declare salary number;
begin
  salary := 5000;
  dbms_output.put_line('SMITH''s salary grade is ' || get_sal_grade(salary));
end;
/

运行结果:
SMITH's salary grade is 1
PL/SQL procedure successfully completed.


(5) 函数的不确定性
比如查表的记录数,就属于函数的不确定性。因为表的记录数会随着记录的插入或删除而发生改变。

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/29485627/viewspace-1246691/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2014-02-14

  • 博文量
    112
  • 访问量
    1057349