码迷,mamicode.com
首页 > 数据库 > 详细

Oracle中的DETERMINISTIC

时间:2014-08-05 19:26:30      阅读:247      评论:0      收藏:0      [点我收藏+]

标签:style   color   使用   io   strong   ar   cti   line   

   多次看到DETERMINISTIC,一直很疑惑,今天做了一个实验。我们欺骗ORACLE说是一个DETERMINISTIC函数,它在SQL中只调用一次。如果不使用DETERMINISTIC,可以看到出来的值都不一样。使用DETERMINISTIC后,不同的会话都出来一样的值。

SQL> create or replace function f_t(i_p int) return number DETERMINISTIC is

      i_rtn number;
    begin
      i_rtn := i_p * dbms_random.value(1,10);
      return i_rtn;
    end;
    /
函数已创建。

session1:
SQL> select LEVEL,f_t(1) FROM DUAL CONNECT BY LEVEL<=10;
     LEVEL     F_T(1)
---------- ----------
         1 2.55732959
         2 2.55732959
         3 2.55732959
         4 2.55732959
         5 2.55732959
         6 2.55732959
         7 2.55732959
         8 2.55732959
         9 2.55732959
        10 2.55732959
已选择10行。


session2:
SQL> select LEVEL,f_t(1) FROM DUAL CONNECT BY LEVEL<=10;
     LEVEL     F_T(1)
---------- ----------
         1 2.55732959
         2 2.55732959
         3 2.55732959
         4 2.55732959
         5 2.55732959
         6 2.55732959
         7 2.55732959
         8 2.55732959
         9 2.55732959
        10 2.55732959
已选择10行。


SQL> create or replace function f_t(i_p int) return number is
       i_rtn number;
    begin
       i_rtn := i_p * dbms_random.value(1,10);
       return i_rtn;
    end;
    /
函数已创建。


SQL> select LEVEL,f_t(1) FROM DUAL CONNECT BY LEVEL<=10;
     LEVEL     F_T(1)
---------- ----------
         1 8.48649118
         2  8.9396978
         3  2.2786135
         4 5.29205905
         5 5.32847713
         6 8.70095819
         7 6.20471031
         8 2.00101537
         9 3.53814265
        10 3.64991086
已选择10行。

Oracle中的DETERMINISTIC,布布扣,bubuko.com

Oracle中的DETERMINISTIC

标签:style   color   使用   io   strong   ar   cti   line   

原文地址:http://blog.csdn.net/stevendbaguo/article/details/38388037

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!