//****************************************************************** // 商用库查询结果按结构对齐类 --- 用于客户端直接SQL和存储过程,通过CORBA调用 // // Author liumengjue // // function: Sql Result Align Class for client, through CORBA // // time : 2003.05.27 // // -------------------------------------------------------------- // // 由 ZhaoTiger 根据 刘孟觉 CSqlResultAlign.h 改写 // // TIME :2003.06.24 //****************************************************************** #ifndef __CSQLRESULTALIGNCLIENT_H #define __CSQLRESULTALIGNCLIENT_H #ifdef _WINDOWS64 #ifdef SQL_SP_CLIENT_EXPORTS #define SQL_SP_CLIENT_API __declspec(dllexport) #else #define SQL_SP_CLIENT_API __declspec(dllimport) #endif #else #define SQL_SP_CLIENT_API #endif #include #include #include "common_types.h" #include "sql_sp_m.h" #include "system.h" using namespace std; #if (defined _LINUX || defined _SUN || defined _WINDOWS64) #define FALSE 0 #define TRUE 1 #endif #define ALIGN_TO_RTDBKEY 1 typedef vector VIndicator; class SQL_SP_CLIENT_API CSqlResultAlignClient { public: CSqlResultAlignClient(); ~CSqlResultAlignClient(); private: int m_nMaxDataTypeLength; //最大数据类型长度 int m_nAlignLength; //按结构对齐以后的结果长度,与输入参数align_result_length作比较,检查错误 int GetDataTypeLength(int data_type); // 通过统一数据类型得到每种数据类型的长度 int GetMaxDataTypeLength(int data_type, int *m_nMaxLength); //通过统一数据类型得到最大数据类型的长度 int DoAlign(int* x, int b); public: //int GetAlignResultClient(SEQResultFieldInfo & field_ptr, SEQResultDataValue & data_ptr, VIndicator & null_vec, void * align_result_ptr, int struct_length); //得到按结构对齐以后的结果 返回align_result_ptr int GetAlignResultClient(SEQResultFieldInfo & field_ptr, SEQResultDataValue & data_ptr, VIndicator & null_vec, void * align_result_ptr, int struct_length, int align_mode = 0); //新增将char[20]对齐到RTDB_KEY_STRU ( align_mode = ALIGN_TO_RTDBKEY) }; #endif