[20170916]sqlplus set array最小2补充.txt
[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下测试结果一样!!
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· .NET Core 托管堆内存泄露/CPU异常的常见思路
· PostgreSQL 和 SQL Server 在统计信息维护中的关键差异
· C++代码改造为UTF-8编码问题的总结
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· 清华大学推出第四讲使用 DeepSeek + DeepResearch 让科研像聊天一样简单!
· 实操Deepseek接入个人知识库
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库