📄 ocistmt.cpp
字号:
}
CHECK(m_Session.get_error(), OCIBindByPos(stmthp, &m_pBind, m_Session.get_error(), (ub4)pos, (dvoid*)&valuep[0], (sb4)sizeof(float), (ub2)SQLT_FLT, 0,0,0,0,0, OCI_DEFAULT));
m_Rows = valuep.size();
}
void COCIStatement::define(int pos, double& valuep)
{
CHECK(m_Session.get_error(), OCIDefineByPos(stmthp, &m_pDefine, m_Session.get_error(), (ub4)pos, &valuep, (sb4)sizeof(double), (ub2)SQLT_FLT, 0,0,0,OCI_DEFAULT));
m_Rows = 1;
}
void COCIStatement::define(int pos, std::vector<double>& valuep)
{
// Check to see if there is at least one element in the std::vector
if(valuep.size() == 0)
{
// Put one in there
valuep.push_back(1);
}
CHECK(m_Session.get_error(), OCIDefineByPos(stmthp, &m_pDefine, m_Session.get_error(), (ub4)pos, &valuep[0], (sb4)sizeof(double), (ub2)SQLT_FLT, 0,0,0,OCI_DEFAULT));
m_Rows = valuep.size();
}
void COCIStatement::bind(int pos, double& valuep)
{
CHECK(m_Session.get_error(), OCIBindByPos(stmthp, &m_pBind, m_Session.get_error(), (ub4)pos, (dvoid*)&valuep, (sb4)sizeof(double), (ub2)SQLT_FLT, 0,0,0,0,0, OCI_DEFAULT));
m_Rows = 1;
}
void COCIStatement::bind(int pos, std::vector<double>& valuep)
{
if(valuep.size() == 0)
{
throw CBindException();
}
CHECK(m_Session.get_error(), OCIBindByPos(stmthp, &m_pBind, m_Session.get_error(), (ub4)pos, (dvoid*)&valuep[0], (sb4)sizeof(double), (ub2)SQLT_FLT, 0,0,0,0,0, OCI_DEFAULT));
m_Rows = valuep.size();
}
void COCIStatement::define(int pos, long double& valuep)
{
CHECK(m_Session.get_error(), OCIDefineByPos(stmthp, &m_pDefine, m_Session.get_error(), (ub4)pos, &valuep, (sb4)sizeof(long double), (ub2)SQLT_FLT, 0,0,0,OCI_DEFAULT));
m_Rows = 1;
}
void COCIStatement::define(int pos, std::vector<long double>& valuep)
{
// Check to see if there is at least one element in the std::vector
if(valuep.size() == 0)
{
// Put one in there
valuep.push_back(1);
}
CHECK(m_Session.get_error(), OCIDefineByPos(stmthp, &m_pDefine, m_Session.get_error(), (ub4)pos, &valuep[0], (sb4)sizeof(long double), (ub2)SQLT_FLT, 0,0,0,OCI_DEFAULT));
m_Rows = valuep.size();
}
void COCIStatement::bind(int pos, long double& valuep)
{
CHECK(m_Session.get_error(), OCIBindByPos(stmthp, &m_pBind, m_Session.get_error(), (ub4)pos, (dvoid*)&valuep, (sb4)sizeof(long double), (ub2)SQLT_FLT, 0,0,0,0,0, OCI_DEFAULT));
m_Rows = 1;
}
void COCIStatement::bind(int pos, std::vector<long double>& valuep)
{
if(valuep.size() == 0)
{
throw CBindException();
}
CHECK(m_Session.get_error(), OCIBindByPos(stmthp, &m_pBind, m_Session.get_error(), (ub4)pos, (dvoid*)&valuep[0], (sb4)sizeof(long double), (ub2)SQLT_FLT, 0,0,0,0,0, OCI_DEFAULT));
m_Rows = valuep.size();
}
void COCIStatement::define(int pos, char* buf, ub4 len, signed short* is_null)
{
CHECK(m_Session.get_error(), OCIDefineByPos(stmthp, &m_pDefine, m_Session.get_error(), (ub4)pos, buf, len + 1, (ub2)SQLT_STR, (is_null) ? is_null: 0,0,0,OCI_DEFAULT));
m_Rows = 1;
}
void COCIStatement::define(int pos, char* valuep, ub4 elem_len, ub4 no_of_elem)
{
CHECK(m_Session.get_error(), OCIDefineByPos(stmthp, &m_pDefine, m_Session.get_error(), (ub4)pos, valuep, (sb4)elem_len + 1, (ub2)SQLT_STR, 0,0,0,OCI_DEFAULT));
m_Rows = no_of_elem;
}
void COCIStatement::bind(int pos, char* buf, ub4 len, signed short* is_null)
{
CHECK(m_Session.get_error(), OCIBindByPos(stmthp, &m_pBind, m_Session.get_error(), (ub4)pos, (dvoid*)buf, (sb4)len + 1, (ub2)SQLT_STR, (is_null) ? is_null: 0,0,0,0,0, OCI_DEFAULT));
m_Rows = 1;
}
void COCIStatement::bind(char* name, char* buf, ub4 len, signed short* is_null)
{
CHECK(m_Session.get_error(), OCIBindByName(stmthp, &m_pBind, m_Session.get_error(), (text *)name, strlen(name), (dvoid*)buf, len + 1, (ub2)SQLT_STR, (is_null) ? is_null: 0,0,0,0,0, OCI_DEFAULT));
m_Rows = 1;
}
void COCIStatement::bind(int pos, char* valuep, ub4 elem_len, ub4 no_of_elem)
{
CHECK(m_Session.get_error(), OCIBindByPos(stmthp, &m_pBind, m_Session.get_error(), (ub4)pos, (dvoid*)valuep, (sb4)elem_len + 1, (ub2)SQLT_STR, 0,0,0,0,0, OCI_DEFAULT));
m_Rows = no_of_elem;
}
void COCIStatement::define(int pos, COCILob& lob)
{
CHECK(m_Session.get_error(), OCIDefineByPos(stmthp, &m_pDefine, m_Session.get_error(), (ub4)pos, (dvoid*)&lob.get_locator(), (sb4)-1, (ub2)lob.get_data_type(), (void*)lob.get_indicator(),0,0,OCI_DEFAULT));
}
void COCIStatement::bind(int pos, COCILob& lob)
{
CHECK(m_Session.get_error(), OCIBindByPos(stmthp, &m_pBind, m_Session.get_error(), (ub4)pos, (dvoid*)&lob.get_locator(), (sb4)sizeof(OCILobLocator*), (ub2)lob.get_data_type(), (void*)lob.get_indicator(),0,0,0,0, OCI_DEFAULT));
}
void COCIStatement::bind(char* name, COCILob& lob)
{
CHECK(m_Session.get_error(), OCIBindByName(stmthp, &m_pBind, m_Session.get_error(), (text *)name, strlen(name), (dvoid*)&lob.get_locator(), (sb4)sizeof (OCILobLocator *), (ub2)lob.get_data_type(), (void*)lob.get_indicator(),0,0,0,0, OCI_DEFAULT));
}
void COCIStatement::define(int pos, COCIRef& ref)
{
CHECK(m_Session.get_error(), OCIDefineByPos(stmthp, &m_pDefine, m_Session.get_error(), (ub4) pos, (dvoid *) 0,
(sb4) 0, SQLT_REF, (dvoid *) ref.get_indicator(), (ub2 *)0,
(ub2 *)0, (ub4) OCI_DEFAULT));
ub4 ref_size;
CHECK(m_Session.get_error(), OCIDefineObject(m_pDefine, m_Session.get_error(), (OCIType *) 0,
(dvoid **) &ref.get_instance(),
&ref_size, (dvoid **) 0, (ub4 *) 0));
}
void COCIStatement::define(int pos, std::vector<COCIRef>& ref)
{
if(ref.size() > 0)
{
m_pRefIndStruct.push_back(new CIndStruct<COCIRef>(ref.size(), ref));
CHECK(m_Session.get_error(), OCIDefineByPos(stmthp, &m_pDefine, m_Session.get_error(), (ub4) pos, (dvoid *) 0,
(sb4) 0, SQLT_REF, (dvoid *) 0, (ub2 *)0,
(ub2 *)0, (ub4) OCI_DEFAULT));
CHECK(m_Session.get_error(), OCIDefineObject(m_pDefine, m_Session.get_error(), (OCIType *) 0,
(dvoid **) m_pRefIndStruct[m_Ref_Count]->get_pgvpp(),
m_pRefIndStruct[m_Ref_Count]->get_pvszp(), (dvoid **) m_pRefIndStruct[m_Ref_Count]->get_indpp(), (ub4 *) m_pRefIndStruct[m_Ref_Count]->get_indszp()));
m_Rows = ref.size();
m_Ref_Count++;
}
else
{
throw CDefineException();
}
}
void COCIStatement::bind(int pos, COCIRef& ref)
{
CHECK(m_Session.get_error(), OCIBindByPos(stmthp, &m_pBind, m_Session.get_error(), (ub4)pos, (dvoid*)ref.get_instance(), (sb4)0, (ub2)SQLT_REF, 0,0,0,0,0, OCI_DEFAULT));
CHECK(m_Session.get_error(), OCIBindObject(m_pBind, m_Session.get_error(), (OCIType *)0, (dvoid **)&ref.get_instance(), (ub4 *) 0, (dvoid **) 0, (ub4 *) 0));
}
void COCIStatement::bind(char* name, COCIRef& ref)
{
//CHECK(m_Session.get_error(), OCIBindByName(stmthp, &m_pBind, m_Session.get_error(), (text *)name, strlen(name), (dvoid*)ref.get_instance(), (sb4)0, (ub2)SQLT_REF, 0,0,0,0,0, OCI_DEFAULT));
//CHECK(m_Session.get_error(), OCIBindObject(m_pBind, m_Session.get_error(), obj.get_type().get_tdo(), &ref.get_instance(), (ub4 *) 0, (dvoid **) 0, (ub4 *) 0));
CHECK(m_Session.get_error(), OCIBindByName(stmthp, &m_pBind, m_Session.get_error(), (text *)name, strlen(name), (dvoid*)ref.get_instance(), (sb4)0, (ub2)SQLT_REF, ref.get_indicator(),0,0,0,0, OCI_DEFAULT));
CHECK(m_Session.get_error(), OCIBindObject(m_pBind, m_Session.get_error(), (ref.is_null() ? 0 : (*ref).get_type().get_tdo()), &ref.get_instance(), (ub4 *) 0, (dvoid **) 0, (ub4 *) 0));
}
void COCIStatement::define(int pos, COCIObject& obj)
{
CHECK(m_Session.get_error(), OCIDefineByPos(stmthp, &m_pDefine, m_Session.get_error(), (ub4) pos, (dvoid *) 0,
(sb4) 0, SQLT_NTY, (dvoid *) 0, (ub2 *)0,
(ub2 *)0, (ub4) OCI_DEFAULT));
ub4 obj_size;
CHECK(m_Session.get_error(), OCIDefineObject(m_pDefine, m_Session.get_error(), (OCIType *) obj.get_type().get_tdo(),
(dvoid **) &obj.get_instance(),
&obj_size, (dvoid **) 0, (ub4 *) 0));
m_Rows = 1;
}
void COCIStatement::define(int pos, std::vector<COCIObject>& obj)
{
// Check to see if there is at least one element in the std::vector
if(obj.size() > 0)
{
m_pObjIndStruct.push_back(new CIndStruct<COCIObject>(obj.size(), obj));
CHECK(m_Session.get_error(), OCIDefineByPos(stmthp, &m_pDefine, m_Session.get_error(), (ub4) pos, (dvoid *) 0,
(sb4) 0, SQLT_NTY, (dvoid *) 0, (ub2 *)0,
(ub2 *)0, (ub4) OCI_DEFAULT));
CHECK(m_Session.get_error(), OCIDefineObject(m_pDefine, m_Session.get_error(), (OCIType *) obj[0].get_type().get_tdo(),
(dvoid **) m_pObjIndStruct[m_Object_Count]->get_pgvpp(),
m_pObjIndStruct[m_Object_Count]->get_pvszp(), (dvoid **) m_pObjIndStruct[m_Object_Count]->get_indpp(), (ub4 *) m_pObjIndStruct[m_Object_Count]->get_indszp()));
m_Rows = obj.size();
m_Object_Count++;
}
else
{
throw CDefineException("Must have initialised an object");
}
}
void COCIStatement::bind(int pos, COCIObject& obj)
{
CHECK(m_Session.get_error(), OCIBindByPos(stmthp, &m_pBind, m_Session.get_error(), (ub4)pos, (dvoid*)obj.get_instance(), (sb4)0, (ub2)SQLT_NTY, obj.get_null_struct(),0,0,0,0, OCI_DEFAULT));
CHECK(m_Session.get_error(), OCIBindObject(m_pBind, m_Session.get_error(), obj.get_type().get_tdo(), &obj.get_instance(), (ub4 *) 0, (dvoid **) 0, (ub4 *) 0));
}
void COCIStatement::bind(char* name, COCIObject& obj)
{
CHECK(m_Session.get_error(), OCIBindByName(stmthp, &m_pBind, m_Session.get_error(), (text *)name, strlen(name), (dvoid*)obj.get_instance(), (sb4)0, (ub2)SQLT_NTY, obj.get_null_struct(),0,0,0,0, OCI_DEFAULT));
CHECK(m_Session.get_error(), OCIBindObject(m_pBind, m_Session.get_error(), obj.get_type().get_tdo(), &obj.get_instance(), (ub4 *) 0, (dvoid **) 0, (ub4 *) 0));
}
void COCIStatement::define(int pos, COCIBinary& raw)
{
CHECK(m_Session.get_error(), OCIDefineByPos(stmthp, &m_pDefine, m_Session.get_error(), (ub4)pos, (dvoid*)raw.begin(), (sb4)raw.length() + sizeof(int), (ub2)SQLT_LVB, 0,0,0,OCI_DEFAULT));
}
void COCIStatement::bind(int pos, COCIBinary& raw)
{
OCIRaw* r = (OCIRaw*)0;
CHECK(m_Session.get_error(), OCIRawAssignBytes(m_Session.get_env(), m_Session.get_error(), raw.begin(), raw.length(), &r));
CHECK(m_Session.get_error(), OCIBindByPos(stmthp, &m_pBind, m_Session.get_error(), (ub4)pos, (dvoid*)r, (ub4)raw.length() + sizeof(int), (ub2)SQLT_LVB, 0,0,0,0,0, OCI_DEFAULT));
}
void COCIStatement::define(int pos, COCINumber& num)
{
CHECK(m_Session.get_error(), OCIDefineByPos(stmthp, &m_pDefine, m_Session.get_error(), (ub4)pos, num.get_instance(), (sb4)sizeof(OCINumber), (ub2)SQLT_VNU, (num.is_null() ? (void*)num.get_indicator() : 0),0,0,OCI_DEFAULT));
}
void COCIStatement::bind(int pos, COCINumber& num)
{
CHECK(m_Session.get_error(), OCIBindByPos(stmthp, &m_pBind, m_Session.get_error(), (ub4)pos, num.get_instance(), (ub4)sizeof(OCINumber), (ub2)SQLT_VNU, (void*)num.get_indicator(),0,0,0,0, OCI_DEFAULT));
}
void COCIStatement::bind(char* name, COCINumber& num)
{
CHECK(m_Session.get_error(), OCIBindByName(stmthp, &m_pBind, m_Session.get_error(), (text *)name, strlen(name), (dvoid*)num.get_instance(), (sb4)sizeof (OCINumber), (ub2)SQLT_VNU, (void*)num.get_indicator(),0,0,0,0, OCI_DEFAULT));
}
void COCIStatement::define(int pos, COCIDate& date)
{
CHECK(m_Session.get_error(), OCIDefineByPos(stmthp, &m_pDefine, m_Session.get_error(), (ub4)pos, date.get_instance(), (sb4)sizeof(OCIDate), (ub2)SQLT_ODT, (void*)date.get_indicator(),0,0,OCI_DEFAULT));
}
void COCIStatement::bind(int pos, COCIDate& date)
{
CHECK(m_Session.get_error(), OCIBindByPos(stmthp, &m_pBind, m_Session.get_error(), (ub4)pos, date.get_instance(), (ub4)sizeof(OCIDate), (ub2)SQLT_ODT, (date.is_null() ? (void*)date.get_indicator() : 0),0,0,0,0, OCI_DEFAULT));
}
void COCIStatement::bind(char* name, COCIDate& date)
{
CHECK(m_Session.get_error(), OCIBindByName(stmthp, &m_pBind, m_Session.get_error(), (text *)name, strlen(name), (dvoid*)date.get_oci_date(), (sb4)sizeof(OCIDate), (ub2)SQLT_ODT, (void*)date.get_indicator(),0,0,0,0, OCI_DEFAULT));
}
void COCIStatement::define(int pos, COCIString& str)
{
define(pos, (char*)str.get_text(), str.get_alloc_size(), str.get_indicator());
}
void COCIStatement::bind(int pos, COCIString& str)
{
bind(pos, (char*)str.get_text(), str.get_size(), str.get_indicator());
}
void COCIStatement::bind(char* name, COCIString& str)
{
bind(name, (char*)str.get_text(), str.get_size(), str.get_indicator());
}
void COCIStatement::define(int pos, std::string& str, signed short* is_null)
{
define(pos, (char*)str.c_str(), str.size(), is_null);
}
void COCIStatement::bind(int pos, std::string& str)
{
bind(pos, (char*)str.c_str(), str.size());
}
void COCIStatement::define(int pos, COCIVArray<COCINumber>& coll)
{
define(pos, coll.get_obj());
}
void COCIStatement::define(int pos, COCIVArray<COCIDate>& coll)
{
define(pos, coll.get_obj());
}
void COCIStatement::bind(int pos, COCIVArray<COCIDate>& coll)
{
bind(pos, coll.get_obj());
}
void COCIStatement::bind(char* name, COCIVArray<COCIDate>& coll)
{
bind(name, coll.get_obj());
}
void COCIStatement::define(int pos, std::vector<COCIVArray<COCINumber> >& coll)
{
if(coll.size() > 0)
{
m_pVArrayNumberIndStruct.push_back(new CIndStruct<COCIVArray<COCINumber> >(coll.size(), coll));
CHECK(m_Session.get_error(), OCIDefineByPos(stmthp, &m_pDefine, m_Session.get_error(), (ub4) pos, (dvoid *) 0,
(sb4) 0, SQLT_NTY, (dvoid *) 0, (ub2 *)0,
(ub2 *)0, (ub4) OCI_DEFAULT));
CHECK(m_Session.get_error(), OCIDefineObject(m_pDefine, m_Session.get_error(), (OCIType *) coll[0].get_type().get_tdo(),
(dvoid **) m_pVArrayNumberIndStruct[m_VArray_Number_Count]->get_pgvpp(),
m_pVArrayNumberIndStruct[m_VArray_Number_Count]->get_pvszp(),
(dvoid **) m_pVArrayNumberIndStruct[m_VArray_Number_Count]->get_indpp(),
(ub4 *) m_pVArrayNumberIndStruct[m_VArray_Number_Count]->get_indszp()));
m_Rows = coll.size();
m_VArray_Number_Count++;
}
else
{
throw CDefineException("Must have initialised an object");
}
}
void COCIStatement::bind(int pos, COCIVArray<COCINumber>& coll)
{
bind(pos, coll.get_obj());
}
void COCIStatement::define(int pos, COCIVArray<COCIString>& coll)
{
define(pos, coll.get_obj());
}
void COCIStatement::define(int pos, std::vector<COCIVArray<COCIString> >& coll)
{
if(coll.size() > 0)
{
m_pVArrayStringIndStruct.push_back(new CIndStruct<COCIVArray<COCIString> >(coll.size(), coll));
CHECK(m_Session.get_error(), OCIDefineByPos(stmthp, &m_pDefine, m_Session.get_error(), (ub4) pos, (dvoid *) 0,
(sb4) 0, SQLT_NTY, (dvoid *) 0, (ub2 *)0,
(ub2 *)0, (ub4) OCI_DEFAULT));
CHECK(m_Session.get_error(), OCIDefineObject(m_pDefine, m_Session.get_error(), (OCIType *) coll[0].get_type().get_tdo(),
(dvoid **) m_pVArrayStringIndStruct[m_VArray_String_Count]->get_pgvpp(),
m_pVArrayStringIndStruct[m_VArray_String_Count]->get_pvszp(),
(dvoid **) m_pVArrayStringIndStruct[m_VArray_String_Count]->get_indpp(),
(ub4 *) m_pVArrayStringIndStruct[m_VArray_String_Count]->get_indszp()));
m_Rows = coll.size();
m_VArray_String_Count++;
}
else
{
throw CDefineException("Must have initialised an object");
}
}
void COCIStatement::bind(int pos, COCIVArray<COCIString>& coll)
{
bind(pos, coll.get_obj());
}
void COCIStatement::define(int pos, COCIVArray<COCIObject>& coll)
{
define(pos, coll.get_obj());
}
void COCIStatement::define(int pos, std::vector<COCIVArray<COCIObject> >& coll)
{
if(coll.size() > 0)
{
m_pVArrayObjectIndStruct.push_back(new CIndStruct<COCIVArray<COCIObject> >(coll.size(), coll));
CHECK(m_Session.get_error(), OCIDefineByPos(stmthp, &m_pDefine, m_Session.get_error(), (ub4) pos, (dvoid *) 0,
(sb4) 0, SQLT_NTY, (dvoid *) 0, (ub2 *)0,
(ub2 *)0, (ub4) OCI_DEFAULT));
CHECK(m_Session.get_error(), OCIDefineObject(m_pDefine, m_Session.get_error(), (OCIType *) coll[0].get_type().get_tdo(),
(dvoid **) m_pVArrayObjectIndStruct[m_VArray_Object_Count]->get_pgvpp(),
m_pVArrayObjectIndStruct[m_VArray_Object_Count]->get_pvszp(),
(dvoid **) m_pVArrayObjectIndStruct[m_VArray_Object_Count]->get_indpp(),
(ub4 *) m_pVArrayObjectIndStruct[m_VArray_Object_Count]->get_indszp()));
m_Rows = coll.size();
m_VArray_Object_Count++;
}
else
{
throw CDefineException("Must have initialised an object");
}
}
void COCIStatement::bind(int pos, COCIVArray<COCIObject>& coll)
{
bind(pos, coll.get_obj());
}
void COCIStatement::define(int pos, COCINestedTable<COCIObject>& coll)
{
define(pos, coll.get_obj());
}
void COCIStatement::bind(int pos, COCINestedTable<COCINumber>& coll)
{
bind(pos, coll.get_obj());
}
void COCIStatement::define(int pos, COCINestedTable<COCINumber>& coll)
{
define(pos, coll.get_obj());
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -