⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ocistmt.cpp

📁 一个通用的oracle OCI开发程序包
💻 CPP
📖 第 1 页 / 共 2 页
字号:
  }
  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 + -