[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.环境:
[email protected]> @ 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
[email protected]> set arraysize 0
SP2-0267: arraysize option 0 out of range (1 through 5000)
[email protected]> set arraysize 1
[email protected]> 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.
[email protected]> set arraysize 2
[email protected]> 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下测试结果一样!!

时间: 2024-10-10 02:19:22

[20170916]sqlplus set array最小2补充.txt的相关文章

[20190401]隐含参数_mutex_spin_count.txt

--//上午做了一些测试关于semtimedop函数调用,发现自己上个星期在一些问题上理解错误.--//相关链接:--//http://blog.itpub.net/267265/viewspace-2640002/--//http://blog.itpub.net/267265/viewspace-2639675/--//我当时相当然认为:16:04:56.410785 semtimedop(309166080, 0x7fff83068fd0, 1, {0, 10000000}) = -1 E

sqlplus中怎么将你全部的操作和结果记录保存到你指定的文件里

[在sqlplus的操作中,非常多时候我们都想把自己的写的sql语句和改动日志或者结果信息做记录] [首先]肯定要正常连接到oralce数据库. [然后] 你用你指定的用户登录到oralce数据库之后.在sqlplus工作区 SQL>spool d:\oracle.txt; 如上命令,keywordspool之后为你想将你接下来要做的全部操作保存在什么地方以及要保存成什么格式. ---- 在你不打算再对数据库操作.或者说你打算关闭sqlplusclient工具的时候.在关闭spool,然后在你刚

arff文件和txt文件之间的转换_python

在github上,已经有前辈对这两种格式的文件间的转换提供了相应的python库,比如liac-arff: https://github.com/renatopp/liac-arff.但是当程序比较复杂时,再调用这么多外部文件,未免显得冗杂:而且这些arff库,在attribute和值数目不一致时,会报错.所以,在师兄的支持下,我参考overflow写了两个简单的转换函数.(用时5个多小时...以后要效率啊) arff2txt(): 将arff文件转换成txt格式: import re impo

sqlplus中怎么将你所有的操作和结果记录保存到你指定的文件中

[在sqlplus的操作中,很多时候我们都想把自己的写的sql语句和修改日志或者结果信息做记录] [首先]肯定要正常连接到oralce数据库. [然后] 你用你指定的用户登录到oralce数据库之后,在sqlplus工作区 SQL>spool d:\oracle.txt; 如上命令,关键字spool之后为你想将你接下来要做的所有操作保存在什么地方以及要保存成什么格式. ---- 在你不打算再对数据库操作,或者说你打算关闭sqlplus客户端工具的时候,在关闭spool,然后在你刚才设定的路径中你

PHP读取txt文件的内容并赋值给数组的代码

使用file_get_contents()获取txt文件的内容,然后通过explode()把获得的字符串转化为数组. 获得数组长度可以使用count()函数 <?php $file = 'keywords.txt'; $content = file_get_contents($file); //echo $content; $array = explode("\r\n", $content); //print_r($array); for($i=0; $i<count($a

[20190401]那个更快的疑问.txt

--//前一阵子,做了11g于10g下,单表单条记录唯一索引扫描的测试,摘要如下:--//参考链接:http://blog.itpub.net/267265/viewspace-2636321/http://blog.itpub.net/267265/viewspace-2636342/ 1.环境:--//当时的测试,在11g下测试结果如下:[email protected]> select method,count(*),round(avg(TIME_ELA),0),sum(TIME_ELA)

javaSE27天复习总结

JAVA学习总结????2 第一天????2 1:计算机概述(了解)????2 (1)计算机????2 (2)计算机硬件????2 (3)计算机软件????2 (4)软件开发(理解)????2 (5)语言????2 (6)人机交换????2 2:键盘功能键的认识和快捷键(掌握)????2 (1)功能键的认识????2 (2)快捷键????3 3:常见的DOS命令(掌握)????3 (1)常见的如下????3 (2)其他的几个(了解)????3 4:Java语言概述(了解)????4 (1)Jav

2016/12/10前端学习笔记CSS结束+JS开始。

18 浏览器兼容问题:IE6不支持小于12px的盒子,兼容方式: height:4px; _font-size:1px; IE6不支持overflow:hidden的方法清除浮动,所以,需要 用 : overflow: hidden; 与_zoom:1;两条代码做兼容处理 css属性之前加上下划线是IE6的专有属性 例如:_background-color:red; 19 margin的塌陷:在标准文档流中竖直方向的margin会有已较大margin 为准的塌陷现象.但是浮动后没有塌陷. 20

3. 文件上传靶机实战(附靶机跟writeup)

upload-labs 一个帮你总结所有类型的上传漏洞的靶场 文件上传靶机下载地址:https://github.com/c0ny1/upload-labs 运行环境 操作系统:推荐windows(除了Pass-19必须在linux下,其余Pass都可以在windows上运行) php版本:推荐5.2.17(其他版本可能会导致部分Pass无法突破) php组件:php_gd2,php_exif(部分Pass需要开启这两个组件) apache:以moudel方式连接 PS:为了节省时间,可下载Wi