📄 oratype.cpp
字号:
#include "stdafx.h"
#define __OCICPP_INTERNAL_USE_
#include "OraType.h"
/*! \class OCICPP::OraType
\brief Abstract base class for the types supplied by the oracle server
*/
OCICPP::OraType::OraType(OCIEnv *envhp,OCIError *errhp,OCIParam *paramd,ub2 type,int Rows):
definehp(0),env(envhp),err(errhp),null(0),nRows(Rows)
{
char *tmpColName;
text *colName;
ub4 colNameLen;
internalType=type;
CHECKERR(errhp,OCIAttrGet((dvoid *) paramd,OCI_DTYPE_PARAM,(dvoid **) &colName,(ub4 *) &colNameLen,(ub4) OCI_ATTR_NAME,errhp));
tmpColName=(char *)calloc(colNameLen+1,sizeof(char));
for(unsigned i=0;i<colNameLen;i++) tmpColName[i]=colName[i];
attrName.assign(tmpColName);
free(tmpColName);
setTypeName();
null=(sb2 *)calloc(nRows,sizeof(sb2));
DEBUG(DLEV_DEBUG,"AttrName=%s TypeName=%s\n",attrName.c_str(),typeName.c_str());
}
OCICPP::OraType::~OraType()
{
free(null);
}
void OCICPP::OraType::setTypeName() {
switch(internalType) {
case SQLT_CHR:
typeName.assign("VARCHAR2");
break;
case SQLT_NUM:
typeName.assign("NUMBER");
break;
case SQLT_LNG:
typeName.assign("LONG");
break;
case SQLT_RDD:
case SQLT_RID:
typeName.assign("ROWID");
break;
case SQLT_DAT:
typeName.assign("DATE");
break;
case SQLT_BIN:
typeName.assign("RAW");
break;
case SQLT_LBI:
typeName.assign("LONG RAW");
break;
case SQLT_AFC:
typeName.assign("CHAR");
break;
case SQLT_LAB:
typeName.assign("MLSLABEL");
break;
case SQLT_REF:
typeName.assign("REF");
break;
case SQLT_CLOB:
typeName.assign("CLOB");
break;
case SQLT_BLOB:
typeName.assign("BLOB");
break;
case SQLT_FILE:
typeName.assign("BFILE");
break;
case SQLT_RSET:
typeName.assign("Nested Table");
break;
default:
typeName.assign("Unknown");
break;
}
}
int OCICPP::OraType::getType() const {
return (int)internalType;
}
unsigned OCICPP::OraType::getSize() const {
return size;
}
int OCICPP::OraType::getReqType() const {
return (int)ReqType;
}
void OCICPP::OraType::getTypeName(std::string &tname) const {
tname.assign(typeName);
}
void OCICPP::OraType::getAttrName(std::string &aname) const {
aname.assign(attrName);
}
bool OCICPP::OraType::isNull(int row) const {
return (null[row]==-1)?1:0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -