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 bytes
		              27 e6 48 2c 16 04 06 b1  // rd 8 bytes
					                          e1 1b a6  .....'.H,.......
0050   43 f9 df 70 b5  // rd 8 bytes
                      78 76 01 07  // rd 4 bytes
					              0b 27  // rd 2 bytes
								        0f  // rd 1 bytes
										   98 00 00 00  C..p.xv...'.....  // rd 4 bytes
										   
0060   03 00 00 00 // rd 4 bytes
                   51 // rd 1 bytes
				      01 // rd 1 bytes
					     01 80 00 00 32 00 00 00 // rd 8 bytes
						                         00 00  ....Q.....2.....
0070   00 00 00 00 00 00 // rd 8 bytes
                         00 00 00 00 00 00 00 00 // rd 8 bytes
						                         00 00  ................
0080   00 00 69 03 01 00 // rd 8 bytes
                         32 00 00 00 00 00 00 00 // rd 8 bytes
						                         00 // rd 1 bytes
												    05  ..i...2......... // rd 1 bytes
0090   05 00 00 00 // rd 4 bytes
                   05 //  rd 1 bytes, 如果 == 0xfc, 说明数据长度 > 0xff
				      54 4f 50 49 43 // rd 5 bytes
					                 00 00 00 00 // rd 4 bytes
									             00 00  .....TOPIC......
00a0   00 00 // rd 4 bytes
             00 00 // rd 2 bytes
			       00 00 00 00 // rd 4 bytes
				               01 // rd 1 bytes
							      02 00 00 81 16 00 00  ................
00b0   00 // rd 8 bytes
          00 00 00 00 00 00 00 00 // rd 8 bytes
		                          00 00 00 00 00 00 00  ................
00c0   00 // rd 8 bytes
          00 00 00 00 00 00 00 00 // rd 8 bytes
		                          00 00 00 00 00 00 00  ................
00d0   00 // rd 8 bytes
          00 // rd 1 bytes
		     03 // rd 1 bytes
			    03 00 00 00 // rd 4 bytes
				            03 // rd 1 bytes
							   53 45 51 // rd 3 bytes
							            00 00 00 00 // rd 4 bytes
										            00  ........SEQ.....
00e0   00 00 00 // rd 4 bytes
                01 00 // rd 2 bytes
				      00 00 00 00 // rd 4 bytes
					              01 // rd 1 bytes
								     01 80 00 00 50 00  ..............P.
00f0   00 00 // rd 8 bytes
             00 00 00 00 00 00 00 00 // rd 8 bytes
			                         00 00 00 00 00 00  ................
0100   00 00 // rd 8 bytes
             00 00 00 00 69 03 01 00 // rd 8 bytes
			                         50 00 00 00 00 00  ......i...P.....
0110   00 00 // rd 8 bytes
             01 // rd 1 bytes
			    04 // rd 1 bytes
				   04 00 00 00 // rd 4 bytes
				               04 // rd 1 bytes
							      49 4e 46 4f // rd 4 bytes
								              00 00 00  .........INFO...
0120   00 // rd 4 bytes
          00 00 00 00 // rd 4 bytes
		              02 00 // rd 2 bytes
					        00 00 00 00 // rd 4 bytes
							            07 00 00 00 // rd 4 bytes
										            07  ................ // rd 1 bytes
0130   78 76 01 07 0e 07 07 // rd 7 bytes
                            01 00 00 00 // rd 4 bytes
							            e8 1f 00 00 // rd 4 bytes
										            1a  xv..............
0140   00 00 00 // rd 4 bytes
                1a 00 00 00 // rd 4 bytes
				            00 00 00 00 // rd 4 bytes
							            06 // rd 1 bytes
										   01 // rd 1 bytes
										      1a 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 bytes
											     0d // 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 02
                                           08 // rd 1 bytes
										      06 00 // rd 2 bytes
											        51  ...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 bytes
							      13 00 // rd 2 bytes
								        00 00 00 00 // rd 4 bytes
										            12  ................
01b0   00 00 00 // rd 4 bytes
                12 // rd length(if >= 0xfc ...)
				   53 49 4d 50 4c 49 46 49 // rd 18 (0x12 = 8*2 + 2)bytes
				                           45 44 20 43  ....SIMPLIFIED C
01c0   48 49 4e 45 
                   53 45 
				         10 00 // rd 2 bytes
						       00 00 00 00 // rd 4 bytes
							               05 00 00 00  HINESE.......... // rd 4 bytes
01d0   05 // rd 1 bytes
          43 48 49 4e 41 // rd 5 bytes
		                 09 00 // rd 2 bytes
						       00 00 00 00 // rd 4 bytes
							               03 00 00 00  .CHINA.......... // rd 4 bytes
01e0   03 // rd 1 bytes
          ef bf a5 // rd 3 bytes
		           00 00 // rd 2 bytes
				         00 00 00 00 // rd 4 bytes
						             05 00 00 00 // rd 4 bytes
									             05 // rd 1 bytes
												    43  ...............C
01f0   48 49 4e 41 // rd 5 bytes
                   01 00 // rd 2 bytes
				         00 00 00 00 // rd 4 bytes
						             02 00 00 00 // rd 4 bytes
									             02 // rd 1 bytes
												    2e  HINA............ // rd 2 bytes
0200   2c 
          02 00 // rd 2 bytes
		        00 00 00 00 // rd 4 bytes
				            08 00 00 00 // rd 4 bytes
							            08 // rd 1 bytes
										   41 4c 33 32  ,...........AL32 // rd 8 bytes
0210   55 54 46 38 
                   0a 00 // rd 2 bytes
				         00 00 00 00 // rd 4 bytes
						             09 00 00 00 // rd 4 bytes
									             09 // rd 1 bytes
												    47  UTF8...........G // rd 9 bytes
0220   52 45 47 4f 52 49 41 4e 
                               0c 00 // rd 2 bytes
							         00 00 00 00 // rd 4 bytes
									             09 00  REGORIAN........ // rd 4 bytes
0230   00 00 
             09 // rd 1 bytes
			    44 44 2d 4d 4f 4e 2d 52 52 // rd 9 bytes
				                           07 00 // rd 2 bytes
										         00 00  ...DD-MON-RR.... // rd 4 bytes
0240   00 00 
             12 00 00 00 // rd 4 bytes
			             12 // rd 1 bytes
						    53 49 4d 50 4c 49 46 49 // rd 18(0x12 = 8 * 2 + 2) bytes
							                        45  .......SIMPLIFIE 
0250   44 20 43 48 49 4e 45 
                            53 45
							      08 00 // rd 2 bytes
								        00 00 00 00 // rd 4 bytes
										            06  D CHINESE....... // rd 4 bytes
0260   00 00 00 
                06 // rd 1 bytes
				   42 49 4e 41 52 59 // rd 6 bytes
				                     0b 00 // rd 2 bytes
									       00 00 00 00  ....BINARY...... // rd 4 bytes
0270   0e 00 00 00 // rd 4 bytes
                   0e // rd 1 bytes
				      48 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 bytes
				      00 00 00 00 // rd 4 bytes
					              18 00 00 00 // rd 4 bytes
								              18 // rd 1 bytes
											     44 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 bytes
						       00 00 00 00 // rd 4 bytes
							               12 00 00 00  XFF AM:......... // rd 4 bytes
02b0   12 // rd 1 bytes
          48 48 2e 4d 49 2e 53 53 58 46 46 20 41 4d 20  .HH.MI.SSXFF AM // rd 18(0x12 = 8 * 2 + 2) bytes
				                           
02c0   54 5a 52 
                3b 00 // rd 2 bytes
				      00 00 00 00 // rd 4 bytes
					              1c 00 00 00 // rd 4 bytes
								              1c // rd 1 bytes
											     44 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 bytes
									       00 00 00 00  XFF AM TZR<..... // rd 4 bytes
02f0   03 00 00 00 // rd 4 bytes
                   03 // rd 1 bytes
				      ef bf a5 // rd 3 bytes
					           34 00 // rd 2 bytes
							         00 00 00 00 // rd 4 bytes
									             06 00  ........4....... // rd 4 bytes
0300   00 00 
             06 // rd 1 bytes
			    42 49 4e 41 52 59 // rd 6 bytes
				                  32 00 // rd 2 bytes
								        00 00 00 00 // rd 4 bytes
										            04  ...BINARY2...... // rd 4 bytes
0310   00 00 00 
                04 // rd 1 bytes
				   42 59 54 45 // rd 4 bytes
				               3d 00 // rd 2 bytes
							         00 00 00 00 // rd 4 bytes
									             05 00  ....BYTE=....... // rd 4 bytes
0320   00 00 
             05 // rd 1 bytes
			    46 41 4c 53 45 // rd 5 bytes
				               3e 00 // rd 2 bytes
							         00 00 00 00 // rd 4 bytes
									             0b 00  ...FALSE>....... // rd 4 bytes
0330   00 00 
             0b // rd 1 bytes
			    80 00 00 00 44 3c 3c 80 00 00 00 // rd 11(0x0b = 8 + 2 + 1) bytes
				                                 a3 00  .......D<<...... // rd 2 bytes
0340   00 00 00 00 // rd 4 bytes
                   04 // rd 1 bytes
				      01 00 00 00 // rd 4 bytes
					              04 00 // rd 2 bytes
								        01 // rd 1 bytes
										   01 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  .....'鍴 ,...贬 ..
// 长度936

0040   10 // rd 1
          17 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 4
										   
0060   03 00 00 00 // rd 4
                   51 // rd 1
				      01 // rd 1
					     01 80 00 00 32 00 00 00 // rd 8
						                         00 00  ....Q.....2.....
0070   00 00 00 00 00 00 // rd 8
                         00 00 00 00 00 00 00 00 // rd 8
						                         00 00  ................
0080   00 00 54 03 01 00 // rd 8
                         32 00 00 00 00 00 00 00 // rd 8
						                         00 // rd 1
												    05  ..T...2......... // rd 1
													
0090   05 00 00 00 // rd 4
                   05 // rd 1 (if > 0xfc)
				      54 4f 50 49 43 // rd 5
					                 00 00 00 00 // rd 4
									             00 00  .....TOPIC......
00a0   00 00 // rd 4
             00 00 // rd 2
			       00 00 00 00 // rd 4
				               01 // rd 1
							      02 00 00 81 16 00 00  ................
00b0   00 // rd 8
          00 00 00 00 00 00 00 00 // rd 8
		                          00 00 00 00 00 00 00  ................
00c0   00 // rd 8
          00 00 00 00 00 00 00 00 // rd 8
		                          00 00 00 00 00 00 00  ................
00d0   00 // rd 8
          00 // rd 1
		     03 // rd 1
			    03 00 00 00 // rd 4
				            03 // rd 1
							   53 45 51 // rd 3
							            00 00 00 00 // rd 4
										            00  ........SEQ.....
00e0   00 00 00 // rd 4
                01 00 // rd 2
				      00 00 00 00 // rd 4
					              01 // rd 1
								     01 80 00 00 50 00  ..............P.
00f0   00 00 // rd 8
             00 00 00 00 00 00 00 00 // rd 8
			                         00 00 00 00 00 00  ................
0100   00 00 // rd 8
             00 00 00 00 54 03 01 00 // rd 8
			                         50 00 00 00 00 00  ......T...P.....
0110   00 00 
             01 // rd 1
			    04 // rd 1
				   04 00 00 00 // rd 4
				               04 // rd 1
							      49 4e 46 4f // rd 4
								              00 00 00  .........INFO...
0120   00 // rd 4
          00 00 00 00 // rd 4
		              02 00 // rd 2
					        00 00 00 00 // rd 4
							            07 00 00 00 // rd 4
										            07  ................ // rd 1
0130   78 76 01 08 0f 2b 16 // rd 7
                            01 00 00 00 // rd 4
							            e8 1f 00 00 // rd 4
										            1a  xv...+..........
0140   00 00 00 // rd 4
                1a 00 00 00 // rd 4
				            00 00 00 00 // rd 4
							            06 // rd 1
										   01 // rd 1
											  // rd 48
										      1a 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 1
											     2b // 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 50
                                  54 
								     08 // rd 1
									    06 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 2
					        13 00 // rd 2
							      00 00 00 00 // rd 4
								              12 00 00  ................
01d0   00 // rd 4
          12 // 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 2
				         00 00 00 00 // rd 4
						             05 00 00 00 // rd 4
									             05 // rd 1
												    43  NESE...........C
01f0   48 49 4e 41 // rd 5

                   09 00 // rd 2
				         00 00 00 00 // rd 4
						             02 00 00 00 // rd 4
									             02 // rd 1
												    a3  HINA............
0200   a4 // rd 2

          00 00 // rd 2
		        00 00 00 00 // rd 4
				            05 00 00 00 // rd 4
							            05 // rd 1
										   43 48 49 4e  ............CHIN
0210   41 // rd 5

          01 00 // rd 2
		        00 00 00 00 // rd 4
				            02 00 00 00 // rd 4
							            02 // rd 1
										   2e 2c // rd 2
										   
										         02 00  A............,.. // rd 2
0220   00 00 00 00 // rd 4
                   08 00 00 00 // rd 4
				               08 // rd 1
							      5a 48 53 31 36 47 42  .........ZHS16GB
0230   4b // rd 8

          0a 00 // rd 2
		        00 00 00 00 // rd 4
				            09 00 00 00 // rd 4
							            09 // rd 1
										   47 52 45 47  K...........GREG
0240   4f 52 49 41 4e // rd 9

                      0c 00 // rd 2
					        00 00 00 00 // rd 4
							            09 00 00 00 // rd 4
										            09  ORIAN........... // rd 1
0250   44 44 2d 4d 4f 4e 2d 52 52 // rd 9

                                  07 00 // rd 2
								        00 00 00 00 // rd 4
										            12  DD-MON-RR.......
0260   00 00 00 // rd 4
                12 rd 1
				   53 49 4d 50 4c 49 46 49 45 44 20 43  ....SIMPLIFIED C
0270   48 49 4e 45 53 45 // rd 18

                         08 00 // rd 2
						       00 00 00 00 // rd 4
							               06 00 00 00  HINESE.......... // rd 4
0280   06 // rd 1
          42 49 4e 41 52 59 // rd 6
		  
		                    0b 00 // rd 2
							      00 00 00 00 // rd 4
								              0e 00 00  .BINARY.........
0290   00 // rd 4
          0e // rd 1
		     48 48 2e 4d 49 2e 53 53 58 46 46 20 41 4d  ..HH.MI.SSXFF AM // rd 14
			 
02a0   39 00 // rd 2
             00 00 00 00 // rd 4
			             18 00 00 00 // rd 4
						             18 // rd 1
									    44 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 0x18

                3a 00 // rd 2
				      00 00 00 00 // rd 4
					              12 00 00 00 // rd 4
								              12 // rd 1
											     48 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 0x12

02e0   3b 00 // rd 2
             00 00 00 00 // rd 4
			             1c 00 00 00 // rd 4
						             1c // rd 1
									    44 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 0x1c

                            3c 00 // rd 2
							      00 00 00 00 // rd 4
									          02 00 00   AM TZR<........
0310   00 // rd 4
          02 // rd 1
			 a3 a4 // rd 2

                   34 00 // rd 2
				         00 00 00 00 // rd 4
						             06 00 00 00 // rd 4
									             06 // rd 1
												    42  ....4..........B
0320   49 4e 41 52 59  // rd 6

                      32 00 // rd 2
					        00 00 00 00 // rd 4
							            04 00 00 00 // rd 4
										            04  INARY2.......... // rd 1
0330   42 59 54 45 // rd 4
                   
				   3d 00 // rd 2
				         00 00 00 00 // rd 4
						             05 00 00 00 // rd 4
									             05 // rd 1
												    46  BYTE=..........F
0340   41 4c 53 45 // rd 5
                   
				   3e 00 // rd 2
				         00 00 00 00 // rd 4
						             0b 00 00 00 // rd 4
									             0b // rd 1
												    80  ALSE>...........
0350   00 00 00 44 3c 3c 80 00 00 00 

                                     a3 00 // rd 2
									       00 00 00 00  ...D<<.......... // rd 4
0360   04 // rd 1, 0x00a3就读一个么?
          01 00 00 00 // rd 4
		  
		              04 00 // rd 2
					        01 // rd 1
							   // rd 16 * 8
							   01 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                          ........
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值