[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下測試結果一樣!!
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/267265/viewspace-2145079/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- [20180510]sqlplus array 和 opifch2.txtSQL
- [20190215]sqlplus set arraysize.txtSQL
- [20211221]記錄使用sqlplus的小問題補充.txtSQL
- [20221203]sqlplus set trimspool 問題.txtSQL
- [20221202]sqlplus set trimout 問題.txtSQL
- [20181122]18c sqlplus set linesize.txtSQL
- [20211221]提示precompute_subquery補充2.txt
- [20181227]簡單探究cluster table(補充)2.txt
- [20190720]sqlplus 與輸出& 2.txtSQL
- [20201208]為什麼返回2行記錄補充.txt
- [20180928]ora-01426(補充).txt
- [20230323]sqlplus #.txtSQL
- [20190329]探究sql語句相關mutexes補充2.txtSQLMutex
- [20181014]12cR2 sqlplus新特性.txtSQL
- [20241016]Oracle C functions annotations補充.txtOracleFunction
- [20211215]提示precompute_subquery補充.txt
- [20220603]測試quiz night(補充).txtUI
- [20211116]plsql_code_type=native補充.txtSQL
- [20191104]sqlplus下顯示資料精度2.txtSQL
- [20211109]sqlplus本地登入緩慢分析2.txtSQL
- [20210803]使用那個shared pool latch(補充).txt
- [20211013]測試遠端監聽補充.txt
- [20221014]TNS-12543 TNSdestination host unreachable(補充).txt
- [20190524]sqlplus 與輸出&.txtSQL
- [20190530]sqlplus preliminary connection.txtSQL
- [20211125]sqlplus生成html格式.txtSQLHTML
- [20211108]sqlplus管道過濾.txtSQL
- set集合,深淺拷貝以及部分知識點補充
- [20180129]簡單探究cluster table(補充)4.txt
- [20181229]簡單探究cluster table(補充)3.txt
- [20220119]超長sql語句補充3.txtSQL
- [20220120]超長sql語句補充4.txtSQL
- [20211111]補充完善ash_wait_chains指令碼.txtAI指令碼
- [20211025]12c sequence nocache測試補充.txt
- [20211123]sqlplus @與@@的區別.txtSQL
- [20230417]sqlplus warpped word_warp.txtSQL
- [20200414]Linux下快速刪除大量檔案(補充).txtLinux
- [20190214]11g Query Result Cache RC Latches補充.txt
- [20190211]簡單測試埠是否開啟(補充).txt