# Oracle-dev **Repository Path**: microestc/oracle-dev ## Basic Information - **Project Name**: Oracle-dev - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2021-08-07 - **Last Updated**: 2021-11-08 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README 1. m_commandTextByteStream ## SQL SELECT Protocol FunctionHeader executesql Packet FunctionHeader | 序号 | 字节长度 | 对象名称 | 值 | | :--: | :------: | :------------: | :--: | | 15 | 1 | ttc code | 3 | | 16 | 1 | function code | 94 | | 17 | 1 | sequenceNumber | 0 | Pisdef | | | | | | ---- | ---- | ---------------------------------------- | --------------- | | 18 | 4 | executeOptions | 计算(变)32801 | | 21 | 1 | cursorId | | | 22 | 1或4 | Pointer (1或者4) 或 NullPointer (1) | | | 23 | | | | | | | | | | | | | | | | | | | | | | | | | | | | | SQL MarshalCLR 解析 DoProtocolNegotiation => m_protoNeg.ReadResponse(); 控制m_effectiveTTCC_MXIN 和 m_bUseBigCLRChunks (1) bytes length = 0 1-0 (2) 0< bytes length <= 252 | 1-length | | :------: | | bytes | (3) bytes length > 252 1 - 254 标志 m_effectiveTTCC_MXIN = 32767 拆分 m_bUseBigCLRChunks = true 模式 | m_bUseBigCLRChunks = true | m_bUseBigCLRChunks = false | | :--------------------------: | :--------------------------: | | 1-254 | 1-254 | | sb4-length | 1-length | | bytes (m_effectiveTTCC_MXIN) | bytes (m_effectiveTTCC_MXIN) | | ... | ... | | sb4-length | 1-length | | bytes (m_effectiveTTCC_MXIN) | bytes (m_effectiveTTCC_MXIN) | | 1-0 | 1-0 | SELECT 语句 中当结果集 行过多 驱动将使用 TTCFetch 发送 ttcCode (03) function (05) 游标 + fetchsize | TTCFetch Packet | TTC Code | Function Code | CurserId | FetchSize | | --------------- | -------- | ------------- | --------------------- | --------------------- | | 位置 | 10 | 11 | 计算 | 计算 | | 字节大小 | 1 | 1 | MarshalSWORD(max 5) | MarshalSWORD(max 5) | 响应包解析 包 位置 10开始 tag = 读一个字节 | 顺序 | tag | 名称 | 数据 | | ---- | ---- | -------------------------- | --------------------------- | | 1 | 16 | 描述信息 | DescribeInfo | | 2 | 6 | 行头信息 | rowHeader | | 3 | 7 | 获取返回值信息和行数据信息 | RowData | | 4 | 21 | 行列分割 | tag 7 21 响应交替出现 | | 5 | ... | 3 4 循环到 fetchsize | | | 6 | 8 | 获取接收影响行数据等数据 | Process_RPA_Message | | 7 | 4 | 获取响应结果 错误信息 | TTCError.ReadErrorMessage() | TTCFetch 响应包 | 顺序 | tag | 名称 | 数据 | | ---- | ---- | -------------------------- | --------------------------- | | 1 | 6 | 行头信息 | rowHeader | | 2 | 7 | 获取返回值信息和行数据信息 | RowData | | 3 | 21 | 行列分割 | | | 4 | ... | 2 3 循环到 fetchsize | | | 5 | 4 | 获取响应结果 错误信息 | TTCError.ReadErrorMessage() | Response Packet | 序号 | TAG | 跟随数据 | 英文名称 | | ---- | ---- | ---- | ---- | | 10 | 16 | 描述信息 | DescribeInfo | | .. | 6 | 行头描述信息 | RowHeader | | .. | 7 | 行数据信息 | RowData | | .. | 21 | 行数据分隔 | | DescribeInfo Packet 格式 | 序号 | bytes | 参数 | 意义 | | ---- | ---- | ---- | ---- | | 1 | 1 | num | 描述信息hash的字节长度 | | 2 | num | describeinfohash | 描述信息哈希值 | | 3 | UB4 | MaxRowSize | 最大行大小 | | 4 | UB4 | noofColumes | 描述信息列数 | | 5 | UB1 | -- | 描述信息列数大于0 可用 | | 循环 | -- | ColumnDescribeInfo | 列描述信息 | | 7 | UB1 | datatype | 列描述数据类型 | | 8 | UB1 | flag | 列描述数据 flag | | 9 | UB1 | precision | 列描述数据 精度数据 | | 10 | UB2|UB1 | scale | 列描述数据 数值范围 | | 11 | SB4 | maxlength | 列描述信息 最大长度 | | 12 | SB4 | maxnoofarrayelements | 列描述信息 最大元素 | | 13 | SB8|SB4 | contFlag | 列描述信息 conflag NegotiatedTTCVersion >= 10 -> sb8 | | 14 | bytes | array | 列描述信息 toid | | 15 | UB2 | version | 列描述信息 version | | 16 | UB2 | characterSetId | 字符编码 setid | | 17 | UB1 | characterSetForm | 字符编码 setform | | 18 | UB4 | maxLengthOfChars | 最大的字符数长度 | | 19 | UB4 | accollid | NegotiatedTTCVersion >= 8 情况下有效 | | 20 | UB1 | NullAllowed | b(num > 0) ? true : false | | 21 | UB1 | -- | 无意义 | | 22 | bytes | ColAlias | 列描述信息 字段名称 | | 23 | bytes | -- | 无意义 | | 24 | bytes | array | 如果XMLTYPE情况 | | 25 | UB2 | -- | 无意义 | | 26 | UB4 | IsIdentityCol IsGenAlways IsGenByDefaultOnNull IsValueLob | NegotiatedTTCVersion >= 6 综合信息 | | - | -- | | | | 28 | DALC | -- | 无意义 | | 29 | UB4 | -- | NegotiatedTTCVersion >= 3 | | 30 | UB4 | -- | NegotiatedTTCVersion >= 3 | | 31 | UB4 | -- | NegotiatedTTCVersion >= 4 | | 32 | UB4 | -- | NegotiatedTTCVersion >= 4 | | 33 | DALC | -- | NegotiatedTTCVersion >= 5 | RowHeader Packet | 序列 | bytes | 参数 | 意义 | | ---- | ---- | ---- | ---- | | 1 | UB1 | flags | | | 2 | UB2 | noofRequests | | | 3 | UB4 | iterationNumber | | | 4 | UB4 | noOfIterations | | | 5 | UB2 | uacBufferLength | | | 6 | DALC | bitArrayOfColumns | | | 7 | DALC | | 省略 无意义 | RowData Packet (7) | 序列 | bytes | 参数 | 意义 | | ---- | ---- | ---- | ---- | | 1 | CLR | Colume | 列字段 | | 循环 | CLR | Colume | -- | | 7 | UB1 | | | ---- | ---- | ---- | | 循环start | --- | -- | | 1 | UB1 | length | | 2 | length | rowcol 值 | | 循环end | -- | 长度为列长度 | | 21 | UB1 | | ---- | ---- | | 1 | UB2 | | 2 | UB1 | (21) 包不是 (7)包的结束包 RPA Packet (8) | 8 | UB1 | 参数 | | ---- | ---- | ---- | | 1 | UB2 | num | | 2 | UB4 | scnFromExecution[0] | | 3 | UB4 | scnFromExecution[1] | | 4 | UB4 | ( num - 2 ) UB4 | | 5 | UB2 | num | | 6 | bytes | num bytes | | 7 | UB2 | keyvalues num | | -- | 键值循环 | | | 8 | UB2 - CLR | key | | 9 | UB2 - CLR | value | | -- | -- | -- | | 10 | UB4 | num bytes 长度 | | 11 | bytes | 内容 | | 12 | UB4 | rowsAffectedByArrayBind num 条件 ! (m_marshallingEngine.NegotiatedTTCVersion < 7 || SqlStatementType.DML != statementType || arrayBindCount <= 0) | | 13 | SB8 | rowsAffectedByArrayBind[k] | Error Packet (4)