首页 / 数据库 / MySQL / Oracle中的DETERMINISTIC
多次看到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 11g 在RedHat Linux 5.8_x64平台的安装手册 http://www.linuxidc.com/Linux/2014-07/104745.htmLinux-6-64下安装Oracle 12C笔记 http://www.linuxidc.com/Linux/2013-07/86805.htm在CentOS 6.4下安装Oracle 11gR2(x64) http://www.linuxidc.com/Linux/2014-02/97374.htmOracle 11gR2 在VMWare虚拟机中安装步骤 http://www.linuxidc.com/Linux/2013-09/89579p2.htmDebian 下 安装 Oracle 11g XE R2 http://www.linuxidc.com/Linux/2014-03/98881.htm更多Oracle相关信息见Oracle 专题页面 http://www.linuxidc.com/topicnews.aspx?tid=12本文永久更新链接地址
收藏该网址