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

📄 ociattr.cpp

📁 一个通用的oracle OCI开发程序包
💻 CPP
字号:
#ifndef _COCIAttribute
#include "ociattr.h"
#endif

#ifndef _COCISession
#include "ocisess.h"
#endif

#ifndef _COCILob
#include "ocilob.h"
#endif

#ifndef _COCIObject
#include "ociobj.h"
#endif

#ifndef _COCINumber
#include "ocinum.h"
#endif

#ifndef _COCIDate
#include "ocidate.h"
#endif

#ifndef _COCIString
#include "ocistr.h"
#endif

#ifndef _COCIRef
#include "ociref.h"
#endif

#ifndef _COCIVArray
#include "ocivry.h"
#endif

#ifndef _COCINestedTable
#include "ocintab.h"
#endif

#ifndef _STRING_
#include <string.h>
#endif

COCIAttribute::COCIAttribute(const COCISession& Sess, dvoid* instance, COCIType Type, COCIObject* parent)
: m_Session(Sess)
, m_pAttrInstance(instance)
, m_Type(Type)
, m_parent(parent)
{
}

COCIAttribute::COCIAttribute(const COCISession& Sess, dvoid* obj_instance, dvoid* attr_instance, text* attr_name, text* type_name, OCITypeCode typecode, COCIObject* parent)
: m_Session(Sess)
, m_pObjectInstance(obj_instance)
, m_pAttrInstance(attr_instance)
, m_parent(parent)
{
  if(attr_name)
  {
    strcpy((char*)m_AttrName,(char*)attr_name);
  }

  if(type_name)
  {
    strcpy((char*)m_TypeName,(char*)type_name);
  }
  m_TypeCode = typecode;
}


COCIAttribute::operator int () const
{
  int temp = 0;
  CHECK(m_Session.get_error(), 
       OCINumberToInt(m_Session.get_error(), 
              (OCINumber*)m_pAttrInstance, 
              sizeof(temp), 
              OCI_NUMBER_SIGNED, 
              &temp));

  return temp;
}

COCIAttribute::operator unsigned int () const
{
  unsigned int   temp = 0;
  CHECK(m_Session.get_error(),
		   OCINumberToInt(m_Session.get_error(),
						  (OCINumber *)m_pAttrInstance,
						  sizeof(unsigned int), 
						  OCI_NUMBER_UNSIGNED,
						  &temp))
  return temp;
}

COCIAttribute::operator short () const
{
  short          temp = 0;
  CHECK(m_Session.get_error(),
             OCINumberToInt(m_Session.get_error(),
                            (OCINumber *)m_pAttrInstance,
                            sizeof(short), 
                            OCI_NUMBER_SIGNED,
                            &temp))
  return temp;
}  

COCIAttribute::operator unsigned short () const
{

  unsigned short temp = 0;
  CHECK(m_Session.get_error(),
             OCINumberToInt(m_Session.get_error(),
                            (OCINumber *)m_pAttrInstance,
                            sizeof(unsigned short), 
                            OCI_NUMBER_UNSIGNED,
                            &temp))
  return temp;
}  

COCIAttribute::operator long () const
{
  long           temp = 0;
  CHECK(m_Session.get_error(),
             OCINumberToInt(m_Session.get_error(),
                            (OCINumber *)m_pAttrInstance,
                            sizeof(long), 
                            OCI_NUMBER_SIGNED,
                            &temp))
  return temp;
}  

COCIAttribute::operator unsigned long () const
{
  unsigned long  temp = 0;
  CHECK(m_Session.get_error(),
             OCINumberToInt(m_Session.get_error(),
                            (OCINumber *)m_pAttrInstance,
                            sizeof(unsigned long), 
                            OCI_NUMBER_UNSIGNED,
                            &temp))
  return temp;
}  

COCIAttribute::operator float () const
{
  float          temp;
  CHECK(m_Session.get_error(),
             OCINumberToReal(m_Session.get_error(),
                             (OCINumber *)m_pAttrInstance,
                             sizeof(float), 
                             &temp))
  return temp;
}  

COCIAttribute::operator double () const
{
  double         temp;
  CHECK(m_Session.get_error(),
             OCINumberToReal(m_Session.get_error(),
                             (OCINumber *)m_pAttrInstance,
                             sizeof(double), 
                             &temp))
  return temp;
}  

COCIAttribute::operator long double () const
{
  long double    temp;
  CHECK(m_Session.get_error(),
             OCINumberToReal(m_Session.get_error(),
                             (OCINumber *)m_pAttrInstance,
                             sizeof(long double), 
                             &temp))
  return temp;
}



COCIAttribute::operator char* () const
{
  return (char*)OCIStringPtr(m_Session.get_env(), (OCIString*)*(void**)m_pAttrInstance);
}


COCIAttribute::operator COCIBLob () const
{
  return COCIBLob(m_Session, *(void**)m_pAttrInstance);
}

COCIAttribute::operator COCICLob () const
{
  return COCICLob(m_Session, *(void**)m_pAttrInstance);
}

COCIAttribute::operator COCIObject () const
{
  return COCIObject(m_Session, m_pAttrInstance, m_Type, m_parent);
}

COCIAttribute::operator COCINumber () const
{
  return COCINumber(m_Session, m_pAttrInstance);
}

COCIAttribute::operator COCIDate () const
{
  return COCIDate(m_Session, m_pAttrInstance);
}

COCIAttribute::operator COCIString () const
{
  return COCIString(m_Session, *(void**)m_pAttrInstance);
}

COCIAttribute::operator COCIRef () const
{
  return COCIRef(m_Session, *(void**)m_pAttrInstance);
}


COCIAttribute::operator COCIVArray<COCINumber> () const
{
  return COCIVArray<COCINumber>(m_Session, *(void**)m_pAttrInstance, m_Type);
}

COCIAttribute::operator COCIVArray<COCIString> () const
{
  return COCIVArray<COCIString>(m_Session, *(void**)m_pAttrInstance, m_Type);
}

COCIAttribute::operator COCINestedTable<COCINumber> () const
{
  return COCINestedTable<COCINumber>(m_Session, *(void**)m_pAttrInstance, m_Type);
}

COCIAttribute::operator COCINestedTable<COCIObject> () const
{
  return COCINestedTable<COCIObject>(m_Session, *(void**)m_pAttrInstance, m_Type);
}

/*
COCIAttribute& COCIAttribute::operator = (const COCIAttribute& src)
{
  if(&src != this)
  {
    m_pObjectInstance = src.m_pObjectInstance;
    m_pAttrInstance = src.m_pAttrInstance;
    strcpy((char*)m_AttrName, (char*)src.m_AttrName);
    strcpy((char*)m_TypeName, (char*)src.m_TypeName);
    m_TypeCode = src.m_TypeCode;
    m_Type = src.m_Type;
    m_parent = src.m_parent;
  }
  return *this;
}
*/

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -