数据流的的读取格式"/>
tns数据流的的读取格式
前言
构造一个SQL查询语句,执行OCIStmtExecute后,会发出一个包,收到1个包。
发出的包,包含SQL语句 :select * …
收到的包:
结果集列信息描述(结果集列数量,列名称,列数据类型)
今天对回包进行了初步分析, 确定了tns流(列信息描述)数据每一步的读取数量。这样,这个流就不是杂乱无章,而是可以看出一些逻辑(即使不继续分析,只看数据的分隔)。
只有执行OCIStmtFetch后,才会返回结果集.
例外:
如果行结果较小,在这个列描述信息的下面,会带上第一个行结果,然后才是结果集的其他描述信息. OCIStmtFetch后,实际上是从缓存中拿的行结果,并没有向数据库发出请求行集的包。
实验数据-结果集列描述信息
0000 00 50 56 c0 00 08 00 0c 29 24 d3 86 08 00 45 00 .PV.....)$....E.
0010 03 be 07 d3 40 00 80 06 05 93 c0 a8 b4 81 c0 a8 ....@...........
0020 b4 01 05 f1 59 31 98 3f 1b 3b fb 8e f7 b7 50 18 ....Y1.?.;....P.
0030 01 00 d0 95 00 00 03 96 00 00 06 00 00 00 00 00 ................0040 10 // rd 1 bytes, Data ID: Describe Information (0x10)17 00 00 00 // rd 4 bytes27 e6 48 2c 16 04 06 b1 // rd 8 bytese1 1b a6 .....'.H,.......
0050 43 f9 df 70 b5 // rd 8 bytes78 76 01 07 // rd 4 bytes0b 27 // rd 2 bytes0f // rd 1 bytes98 00 00 00 C..p.xv...'..... // rd 4 bytes0060 03 00 00 00 // rd 4 bytes51 // rd 1 bytes01 // rd 1 bytes01 80 00 00 32 00 00 00 // rd 8 bytes00 00 ....Q.....2.....
0070 00 00 00 00 00 00 // rd 8 bytes00 00 00 00 00 00 00 00 // rd 8 bytes00 00 ................
0080 00 00 69 03 01 00 // rd 8 bytes32 00 00 00 00 00 00 00 // rd 8 bytes00 // rd 1 bytes05 ..i...2......... // rd 1 bytes
0090 05 00 00 00 // rd 4 bytes05 // rd 1 bytes, 如果 == 0xfc, 说明数据长度 > 0xff54 4f 50 49 43 // rd 5 bytes00 00 00 00 // rd 4 bytes00 00 .....TOPIC......
00a0 00 00 // rd 4 bytes00 00 // rd 2 bytes00 00 00 00 // rd 4 bytes01 // rd 1 bytes02 00 00 81 16 00 00 ................
00b0 00 // rd 8 bytes00 00 00 00 00 00 00 00 // rd 8 bytes00 00 00 00 00 00 00 ................
00c0 00 // rd 8 bytes00 00 00 00 00 00 00 00 // rd 8 bytes00 00 00 00 00 00 00 ................
00d0 00 // rd 8 bytes00 // rd 1 bytes03 // rd 1 bytes03 00 00 00 // rd 4 bytes03 // rd 1 bytes53 45 51 // rd 3 bytes00 00 00 00 // rd 4 bytes00 ........SEQ.....
00e0 00 00 00 // rd 4 bytes01 00 // rd 2 bytes00 00 00 00 // rd 4 bytes01 // rd 1 bytes01 80 00 00 50 00 ..............P.
00f0 00 00 // rd 8 bytes00 00 00 00 00 00 00 00 // rd 8 bytes00 00 00 00 00 00 ................
0100 00 00 // rd 8 bytes00 00 00 00 69 03 01 00 // rd 8 bytes50 00 00 00 00 00 ......i...P.....
0110 00 00 // rd 8 bytes01 // rd 1 bytes04 // rd 1 bytes04 00 00 00 // rd 4 bytes04 // rd 1 bytes49 4e 46 4f // rd 4 bytes00 00 00 .........INFO...
0120 00 // rd 4 bytes00 00 00 00 // rd 4 bytes02 00 // rd 2 bytes00 00 00 00 // rd 4 bytes07 00 00 00 // rd 4 bytes07 ................ // rd 1 bytes
0130 78 76 01 07 0e 07 07 // rd 7 bytes01 00 00 00 // rd 4 bytese8 1f 00 00 // rd 4 bytes1a xv..............
0140 00 00 00 // rd 4 bytes1a 00 00 00 // rd 4 bytes00 00 00 00 // rd 4 bytes06 // rd 1 bytes01 // rd 1 bytes1a 00 03 ................ // rd 48(8 * 6)bytes
0150 00 00 00 00 00 01 00 00 00 00 00 00 00 00 00 00 ................
0160 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0170 00 00 00 00 00 00 00 00 00 00 00 00 00 07 // rd 1 bytes0d // rd 1 bytes, this is a length(if >= 0xfc ...)2c ..............., // rd 13(0x0d) bytes
0180 00 02 06 41 43 43 45 50 54 02 c1 0208 // rd 1 bytes06 00 // rd 2 bytes51 ...ACCEPT......Q // rd 24(8 * 3)bytes
0190 89 12 00 00 00 00 00 03 00 00 00 00 00 00 00 00 ................
01a0 00 00 00 00 00 00 00 00 00 // rd 2 bytes13 00 // rd 2 bytes00 00 00 00 // rd 4 bytes12 ................
01b0 00 00 00 // rd 4 bytes12 // rd length(if >= 0xfc ...)53 49 4d 50 4c 49 46 49 // rd 18 (0x12 = 8*2 + 2)bytes45 44 20 43 ....SIMPLIFIED C
01c0 48 49 4e 45 53 45 10 00 // rd 2 bytes00 00 00 00 // rd 4 bytes05 00 00 00 HINESE.......... // rd 4 bytes
01d0 05 // rd 1 bytes43 48 49 4e 41 // rd 5 bytes09 00 // rd 2 bytes00 00 00 00 // rd 4 bytes03 00 00 00 .CHINA.......... // rd 4 bytes
01e0 03 // rd 1 bytesef bf a5 // rd 3 bytes00 00 // rd 2 bytes00 00 00 00 // rd 4 bytes05 00 00 00 // rd 4 bytes05 // rd 1 bytes43 ...............C
01f0 48 49 4e 41 // rd 5 bytes01 00 // rd 2 bytes00 00 00 00 // rd 4 bytes02 00 00 00 // rd 4 bytes02 // rd 1 bytes2e HINA............ // rd 2 bytes
0200 2c 02 00 // rd 2 bytes00 00 00 00 // rd 4 bytes08 00 00 00 // rd 4 bytes08 // rd 1 bytes41 4c 33 32 ,...........AL32 // rd 8 bytes
0210 55 54 46 38 0a 00 // rd 2 bytes00 00 00 00 // rd 4 bytes09 00 00 00 // rd 4 bytes09 // rd 1 bytes47 UTF8...........G // rd 9 bytes
0220 52 45 47 4f 52 49 41 4e 0c 00 // rd 2 bytes00 00 00 00 // rd 4 bytes09 00 REGORIAN........ // rd 4 bytes
0230 00 00 09 // rd 1 bytes44 44 2d 4d 4f 4e 2d 52 52 // rd 9 bytes07 00 // rd 2 bytes00 00 ...DD-MON-RR.... // rd 4 bytes
0240 00 00 12 00 00 00 // rd 4 bytes12 // rd 1 bytes53 49 4d 50 4c 49 46 49 // rd 18(0x12 = 8 * 2 + 2) bytes45 .......SIMPLIFIE
0250 44 20 43 48 49 4e 45 53 4508 00 // rd 2 bytes00 00 00 00 // rd 4 bytes06 D CHINESE....... // rd 4 bytes
0260 00 00 00 06 // rd 1 bytes42 49 4e 41 52 59 // rd 6 bytes0b 00 // rd 2 bytes00 00 00 00 ....BINARY...... // rd 4 bytes
0270 0e 00 00 00 // rd 4 bytes0e // rd 1 bytes48 48 2e 4d 49 2e 53 53 58 46 46 .....HH.MI.SSXFF // rd 14 (0x0e = 8 + 4 + 2) bytes
0280 20 41 4d 39 00 // rd 2 bytes00 00 00 00 // rd 4 bytes18 00 00 00 // rd 4 bytes18 // rd 1 bytes44 44 AM9..........DD // rd 24(0x18 = 8 * 3) bytes
0290 2d 4d 4f 4e 2d 52 52 20 48 48 2e 4d 49 2e 53 53 -MON-RR HH.MI.SS
02a0 58 46 46 20 41 4d 3a 00 // rd 2 bytes00 00 00 00 // rd 4 bytes12 00 00 00 XFF AM:......... // rd 4 bytes
02b0 12 // rd 1 bytes48 48 2e 4d 49 2e 53 53 58 46 46 20 41 4d 20 .HH.MI.SSXFF AM // rd 18(0x12 = 8 * 2 + 2) bytes02c0 54 5a 52 3b 00 // rd 2 bytes00 00 00 00 // rd 4 bytes1c 00 00 00 // rd 4 bytes1c // rd 1 bytes44 44 TZR;..........DD // rd 28(0x1c = 8 * 3 + 4) bytes
02d0 2d 4d 4f 4e 2d 52 52 20 48 48 2e 4d 49 2e 53 53 -MON-RR HH.MI.SS
02e0 58 46 46 20 41 4d 20 54 5a 52 3c 00 // rd 2 bytes00 00 00 00 XFF AM TZR<..... // rd 4 bytes
02f0 03 00 00 00 // rd 4 bytes03 // rd 1 bytesef bf a5 // rd 3 bytes34 00 // rd 2 bytes00 00 00 00 // rd 4 bytes06 00 ........4....... // rd 4 bytes
0300 00 00 06 // rd 1 bytes42 49 4e 41 52 59 // rd 6 bytes32 00 // rd 2 bytes00 00 00 00 // rd 4 bytes04 ...BINARY2...... // rd 4 bytes
0310 00 00 00 04 // rd 1 bytes42 59 54 45 // rd 4 bytes3d 00 // rd 2 bytes00 00 00 00 // rd 4 bytes05 00 ....BYTE=....... // rd 4 bytes
0320 00 00 05 // rd 1 bytes46 41 4c 53 45 // rd 5 bytes3e 00 // rd 2 bytes00 00 00 00 // rd 4 bytes0b 00 ...FALSE>....... // rd 4 bytes
0330 00 00 0b // rd 1 bytes80 00 00 00 44 3c 3c 80 00 00 00 // rd 11(0x0b = 8 + 2 + 1) bytesa3 00 .......D<<...... // rd 2 bytes
0340 00 00 00 00 // rd 4 bytes04 // rd 1 bytes01 00 00 00 // rd 4 bytes04 00 // rd 2 bytes01 // rd 1 bytes01 00 00 00 ................ // rd (8 * 16) bytes
0350 00 00 00 00 00 00 03 00 00 00 03 00 20 00 00 00 ............ ...
0360 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0370 00 00 00 00 00 05 00 00 01 00 00 00 36 01 00 00 ............6...
0380 00 00 00 00 00 00 00 00 00 00 00 00 80 12 5d 19 ..............].
0390 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
03a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
03b0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
03c0 00 00 00 00 00 00 00 00 00 00 00 00 ............
实验数据-结果集列描述信息-整理1
又跟了一次,可能整理的更容易理解一些。
0000 00 50 56 c0 00 08 00 0c 29 91 36 b6 08 00 45 00 .PV.....).6...E.
0010 03 da 07 17 40 00 80 06 3a 32 c0 a8 9a 82 c0 a8 ....@...:2......
0020 9a 01 05 f1 7f 53 0a 1a ed 3b 04 43 92 4c 50 18 .....S...;.C.LP.
0030 01 00 17 67 00 00 03 b2 00 00 06 00 00 00 00 00 ...g............// 0000000008FACCC0 10 17 00 00 00 27 E6 48 2C 16 04 06 B1 E1 1B A6 .....'鍴 ,...贬 ..
// 长度9360040 10 // rd 117 00 00 00 // rd 4// rd 23 (0x17 = 8 + 8 + 4 + 2 + 1)27 e6 48 2c 16 04 06 b1 e1 1b a6 .....'.H,.......
0050 43 f9 df 70 b5 78 76 01 08 0f 29 10 98 00 00 00 C..p.xv...)..... // rd 40060 03 00 00 00 // rd 451 // rd 101 // rd 101 80 00 00 32 00 00 00 // rd 800 00 ....Q.....2.....
0070 00 00 00 00 00 00 // rd 800 00 00 00 00 00 00 00 // rd 800 00 ................
0080 00 00 54 03 01 00 // rd 832 00 00 00 00 00 00 00 // rd 800 // rd 105 ..T...2......... // rd 10090 05 00 00 00 // rd 405 // rd 1 (if > 0xfc)54 4f 50 49 43 // rd 500 00 00 00 // rd 400 00 .....TOPIC......
00a0 00 00 // rd 400 00 // rd 200 00 00 00 // rd 401 // rd 102 00 00 81 16 00 00 ................
00b0 00 // rd 800 00 00 00 00 00 00 00 // rd 800 00 00 00 00 00 00 ................
00c0 00 // rd 800 00 00 00 00 00 00 00 // rd 800 00 00 00 00 00 00 ................
00d0 00 // rd 800 // rd 103 // rd 103 00 00 00 // rd 403 // rd 153 45 51 // rd 300 00 00 00 // rd 400 ........SEQ.....
00e0 00 00 00 // rd 401 00 // rd 200 00 00 00 // rd 401 // rd 101 80 00 00 50 00 ..............P.
00f0 00 00 // rd 800 00 00 00 00 00 00 00 // rd 800 00 00 00 00 00 ................
0100 00 00 // rd 800 00 00 00 54 03 01 00 // rd 850 00 00 00 00 00 ......T...P.....
0110 00 00 01 // rd 104 // rd 104 00 00 00 // rd 404 // rd 149 4e 46 4f // rd 400 00 00 .........INFO...
0120 00 // rd 400 00 00 00 // rd 402 00 // rd 200 00 00 00 // rd 407 00 00 00 // rd 407 ................ // rd 1
0130 78 76 01 08 0f 2b 16 // rd 701 00 00 00 // rd 4e8 1f 00 00 // rd 41a xv...+..........
0140 00 00 00 // rd 41a 00 00 00 // rd 400 00 00 00 // rd 406 // rd 101 // rd 1// rd 481a 00 03 ................
0150 00 00 00 00 00 01 00 00 00 00 00 00 00 00 00 00 ................
0160 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0170 00 00 00 00 00 00 00 00 00 00 00 00 00 07 // rd 12b // rd 1(length)// rd 43(0x2b = 8 * 5 + 2 + 1)0c ..............+.
0180 01 03 00 40 7c 91 00 22 06 41 43 43 45 50 54 02 ...@|..".ACCEPT.
0190 c1 02 17 69 6e 66 6f 3a 73 65 71 3d 31 2c 74 6f ...info:seq=1,to
01a0 70 69 63 3d 41 43 43 45 5054 08 // rd 106 00 // rd 2// rd 24(0x18)38 f5 11 pic=ACCEPT...8..
01b0 00 00 00 00 00 03 00 00 00 00 00 00 00 00 00 00 ................
01c0 00 00 00 00 00 00 00 // rd 213 00 // rd 200 00 00 00 // rd 412 00 00 ................
01d0 00 // rd 412 // rd 1// rd 18(0x12)53 49 4d 50 4c 49 46 49 45 44 20 43 48 49 ..SIMPLIFIED CHI
01e0 4e 45 53 45 10 00 // rd 200 00 00 00 // rd 405 00 00 00 // rd 405 // rd 143 NESE...........C
01f0 48 49 4e 41 // rd 509 00 // rd 200 00 00 00 // rd 402 00 00 00 // rd 402 // rd 1a3 HINA............
0200 a4 // rd 200 00 // rd 200 00 00 00 // rd 405 00 00 00 // rd 405 // rd 143 48 49 4e ............CHIN
0210 41 // rd 501 00 // rd 200 00 00 00 // rd 402 00 00 00 // rd 402 // rd 12e 2c // rd 202 00 A............,.. // rd 2
0220 00 00 00 00 // rd 408 00 00 00 // rd 408 // rd 15a 48 53 31 36 47 42 .........ZHS16GB
0230 4b // rd 80a 00 // rd 200 00 00 00 // rd 409 00 00 00 // rd 409 // rd 147 52 45 47 K...........GREG
0240 4f 52 49 41 4e // rd 90c 00 // rd 200 00 00 00 // rd 409 00 00 00 // rd 409 ORIAN........... // rd 1
0250 44 44 2d 4d 4f 4e 2d 52 52 // rd 907 00 // rd 200 00 00 00 // rd 412 DD-MON-RR.......
0260 00 00 00 // rd 412 rd 153 49 4d 50 4c 49 46 49 45 44 20 43 ....SIMPLIFIED C
0270 48 49 4e 45 53 45 // rd 1808 00 // rd 200 00 00 00 // rd 406 00 00 00 HINESE.......... // rd 4
0280 06 // rd 142 49 4e 41 52 59 // rd 60b 00 // rd 200 00 00 00 // rd 40e 00 00 .BINARY.........
0290 00 // rd 40e // rd 148 48 2e 4d 49 2e 53 53 58 46 46 20 41 4d ..HH.MI.SSXFF AM // rd 1402a0 39 00 // rd 200 00 00 00 // rd 418 00 00 00 // rd 418 // rd 144 44 2d 4d 4f 9..........DD-MO
02b0 4e 2d 52 52 20 48 48 2e 4d 49 2e 53 53 58 46 46 N-RR HH.MI.SSXFF
02c0 20 41 4d // rd 0x183a 00 // rd 200 00 00 00 // rd 412 00 00 00 // rd 412 // rd 148 48 AM:..........HH
02d0 2e 4d 49 2e 53 53 58 46 46 20 41 4d 20 54 5a 52 .MI.SSXFF AM TZR // rd 0x1202e0 3b 00 // rd 200 00 00 00 // rd 41c 00 00 00 // rd 41c // rd 144 44 2d 4d 4f ;..........DD-MO
02f0 4e 2d 52 52 20 48 48 2e 4d 49 2e 53 53 58 46 46 N-RR HH.MI.SSXFF
0300 20 41 4d 20 54 5a 52 // rd 0x1c3c 00 // rd 200 00 00 00 // rd 402 00 00 AM TZR<........
0310 00 // rd 402 // rd 1a3 a4 // rd 234 00 // rd 200 00 00 00 // rd 406 00 00 00 // rd 406 // rd 142 ....4..........B
0320 49 4e 41 52 59 // rd 632 00 // rd 200 00 00 00 // rd 404 00 00 00 // rd 404 INARY2.......... // rd 1
0330 42 59 54 45 // rd 43d 00 // rd 200 00 00 00 // rd 405 00 00 00 // rd 405 // rd 146 BYTE=..........F
0340 41 4c 53 45 // rd 53e 00 // rd 200 00 00 00 // rd 40b 00 00 00 // rd 40b // rd 180 ALSE>...........
0350 00 00 00 44 3c 3c 80 00 00 00 a3 00 // rd 200 00 00 00 ...D<<.......... // rd 4
0360 04 // rd 1, 0x00a3就读一个么?01 00 00 00 // rd 404 00 // rd 201 // rd 1// rd 16 * 801 00 00 00 00 00 00 00 ................
0370 00 00 03 00 00 00 03 00 20 00 00 00 00 00 00 00 ........ .......
0380 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0390 00 05 00 00 01 00 00 00 36 01 00 00 00 00 00 00 ........6.......
03a0 00 00 00 00 00 00 00 00 00 4d 6f 19 00 00 00 00 .........Mo.....
03b0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
03c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
03d0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
03e0 00 00 00 00 00 00 00 00 ........
更多推荐
tns数据流的的读取格式
发布评论