[20170916]sqlplus set array最小2补充.txt

简介: [20170916]sqlplus set array最小2补充.txt --//以前写的贴子,链接http://blog.itpub.net/267265/viewspace-1453652/ --//上面提到设置array=1或者array=2.

[20170916]sqlplus set array最小2补充.txt

--//以前写的贴子,链接http://blog.itpub.net/267265/viewspace-1453652/
--//上面提到设置array=1或者array=2.执行sql语句输出的逻辑读是一样的,所以得到一个结论.
--//set array最小是2.
--//我也在http://blog.itpub.net/267265/viewspace-2138596/里面提到.fetch 与arraysize的关系.
--//是先fetch 1,arraysize,.....输出是arraysize,每次在输出缓存中保留1条.
--//所以看到的输出arraysize,arraysize条记录,剩下的记录.

--//但是今天我测试发现如果arraysize=1,输出有点不同通过例子说明:

1.环境:
SCOTT@test01p> @ ver1
PORT_STRING                    VERSION        BANNER                                                                               CON_ID
------------------------------ -------------- -------------------------------------------------------------------------------- ----------
IBMPC/WIN_NT64-9.1.0           12.1.0.1.0     Oracle Database 12c Enterprise Edition Release 12.1.0.1.0 - 64bit Production              0

GRANT EXECUTE ON SYS.DBMS_LOCK TO SCOTT;

CREATE OR REPLACE FUNCTION SCOTT.sleep (seconds IN NUMBER)
RETURN NUMBER AS
BEGIN
  sys.dbms_lock.sleep(seconds);
  RETURN seconds;
END;
/

--//如果写成如何,留给大家测试.
CREATE OR REPLACE FUNCTION SCOTT.sleep1 (seconds IN NUMBER)
RETURN NUMBER
DETERMINISTIC
AS
BEGIN
  sys.dbms_lock.sleep(seconds);
  RETURN seconds;
END;
/


2.测试:
--//arraysize=1
SCOTT@test01p> set arraysize 0
SP2-0267: arraysize option 0 out of range (1 through 5000)
SCOTT@test01p> set arraysize 1
SCOTT@test01p> select empno, ename, deptno, sleep (1) n1  from emp;
     EMPNO ENAME          DEPTNO         N1
---------- ---------- ---------- ----------
      7369 SMITH              20          1
      7499 ALLEN              30          1
      7521 WARD               30          1
      7566 JONES              20          1
      7654 MARTIN             30          1
      7698 BLAKE              30          1
      7782 CLARK              10          1
      7788 SCOTT              20          1
      7839 KING               10          1
      7844 TURNER             30          1
      7876 ADAMS              20          1
      7900 JAMES              30          1
      7902 FORD               20          1
      7934 MILLER             10          1
14 rows selected.

--//你可以发现先输出1行,然后才是2,2,2.
SCOTT@test01p> set arraysize 2
SCOTT@test01p> select empno, ename, deptno, sleep (1) n1  from emp;
...

--//你可以发现先输出2行(注不是1行),然后才是2,2,2.为什么存在这个小小的区别呢?跟踪看看.

3.跟踪:
set arraysize 1
@10046on 12
select empno, ename, deptno, sleep (1) n1  from emp;
@ 10046off

D:\tools\rlwrap>grep FETCH D:\app\oracle\diag\rdbms\test\test\trace\test_ora_5436.trc
grep FETCH D:\app\oracle\diag\rdbms\test\test\trace\test_ora_5436.trc
FETCH #821664400:c=0,e=1002980,p=0,cr=5,cu=0,mis=0,r=1,dep=0,og=1,plh=3956160932,tim=10059543349
FETCH #821664400:c=0,e=2000348,p=0,cr=1,cu=0,mis=0,r=2,dep=0,og=1,plh=3956160932,tim=10061547530
FETCH #821664400:c=0,e=2000175,p=0,cr=1,cu=0,mis=0,r=2,dep=0,og=1,plh=3956160932,tim=10063548611
FETCH #821664400:c=0,e=1999935,p=0,cr=1,cu=0,mis=0,r=2,dep=0,og=1,plh=3956160932,tim=10065549649
FETCH #821664400:c=0,e=2000097,p=0,cr=1,cu=0,mis=0,r=2,dep=0,og=1,plh=3956160932,tim=10067550708
FETCH #821664400:c=0,e=2000102,p=0,cr=1,cu=0,mis=0,r=2,dep=0,og=1,plh=3956160932,tim=10069551690
FETCH #821664400:c=0,e=2000276,p=0,cr=1,cu=0,mis=0,r=2,dep=0,og=1,plh=3956160932,tim=10071552866
FETCH #821664400:c=0,e=999906,p=0,cr=3,cu=0,mis=0,r=1,dep=0,og=1,plh=3956160932,tim=10072553662

--//从这里也可以看出arraysize最小是2.
--//至于为什么arraysize=1的情况下那样输出,我仅仅猜测在执行过程中修正了arraysize=2,其中的细节不好解析了.
--//在11g下测试结果一样!!

目录
相关文章
ES6 数组去重的最佳实践:Set 结合 Array.from() | 拓展运算符结合 Set
一直想写个ES6特性的系列文章,整理了一段时间,不想写概而全的纯理论,只想写一些贴近工作的, 最常用到的,比如块级作用域,箭头函数,字符串模板等等---敬请期待 上面那两个方法并不是万能的,只能作为常规的数组去重,因为涉及到对象或者多维数组的去重, 还是需要其他一些方法来辅助,该遍历遍历,该比较还是得比较。。。。
202 0
|
Java
list set array map 排序问题
    While analyzing source code of a large number of open source Java projects, I found Java developers frequently sort in two ways.
992 0
|
C++ Java 存储
LeetCode 73 Set Matrix Zeroes(设矩阵元素为0)(Array)(*)
版权声明:转载请联系本人,感谢配合!本站地址:http://blog.csdn.net/nomasp https://blog.csdn.net/NoMasp/article/details/52139263 翻译 给定一个mm x nn的矩阵matrix,如果其中一个元素为0,那么将其所在的行和列的元素统统设为0。
1051 0
|
测试技术 关系型数据库 Oracle
[20150309]sqlplus set array最小2.txt
[20150309]sqlplus set array最小2.txt --上午做测试发现1个问题,设置array=1是无效的,在sqlplus下set array最小是2.
890 0
|
6天前
|
存储 JavaScript 索引
js开发:请解释什么是ES6的Map和Set,以及它们与普通对象和数组的区别。
ES6引入了Map和Set数据结构。Map的键可以是任意类型且有序,与对象的字符串或符号键不同;Set存储唯一值,无重复。两者皆可迭代,支持for...of循环。Map有get、set、has、delete等方法,Set有add、delete、has方法。示例展示了Map和Set的基本操作。
17 3
|
1月前
|
存储 自然语言处理 C++
map和set的简单介绍
map和set的简单介绍
20 1
|
1月前
|
存储 安全 Java
java集合框架及其特点(List、Set、Queue、Map)
java集合框架及其特点(List、Set、Queue、Map)
|
3月前
|
JavaScript 前端开发 定位技术
JavaScript 中如何代理 Set(集合) 和 Map(映射)
JavaScript 中如何代理 Set(集合) 和 Map(映射)
50 0
|
3月前
|
存储 安全 Java
Map和Set(JAVA)
Map和Set(JAVA)
50 1
|
3月前
|
编译器 C++ 容器
【C++学习手札】基于红黑树封装模拟实现map和set
【C++学习手札】基于红黑树封装模拟实现map和set