//*-- AUTHOR : Ilse Koenig
//*-- Modified : 11/09/2000
//_HADES_CLASS_DESCRIPTION
/////////////////////////////////////////////////////////////////////////
// HDbColumnType
//
// Base class for Oracle column types
//
// Derived classes are:
// HDbColCharType for Oracle type CHAR
// HDbColVcType VARCHAR2
// HDbColNumType NUMBER
// HDbColDateType DATE
// HDbColRowidType ROWID
// HDbColLongType LONG
// HDbColRawType RAW
//
// Because of problems to convert LONG and RAW types to VARCHAR2, the
// datatypes LONG and RAW are actually not supported.
//
/////////////////////////////////////////////////////////////////////////
#include "hdbcolumntype.h"
ClassImp(HDbColumnType)
ClassImp(HDbColCharType)
ClassImp(HDbColVcType)
ClassImp(HDbColNumType)
ClassImp(HDbColDateType)
ClassImp(HDbColLongType)
ClassImp(HDbColRowidType)
ClassImp(HDbColRawType)
HDbColumnType::HDbColumnType(const char* n, Int_t l, Int_t p, Int_t s ) {
// Constructor
SetName(n);
varLength=l;
dataPrecision=p;
dataScale=s;
}
TString HDbColumnType::getSelectString(const char* col, const char*) {
// Base class funtion returns an emtpy string because the current type is not
// supported
Error("HDbColumnType::getNvlSelectString",
"n Type %s of columnn %s actually not supported",
GetName(), col);
TString s("");
return s;
}
TString HDbColumnType::getNvlSelectString(const char* col, const char* td,
const char*){
// Base class funtion returns an emtpy string because the current type is not
// supported
TString s(getSelectString(col,td));
return s;
}
HDbColCharType::HDbColCharType(Int_t l) : HDbColumnType("CHAR",l) {
// Constructor for type CHAR (default length 1)
if (l<=0) varLength=1;
}
TString HDbColCharType::getTypeString() {
// Returns the type string, e.g. "CHAR(1)"
TString s=("CHAR(");
char buf[10];
sprintf(buf,"%i",varLength);
s=s + buf + ")";
return s;
}
TString HDbColCharType::getSelectString(const char* col, const char* td) {
// Returns the name of the column enclosed in given text delimiter
TString s;
if (varLength>1) {
if (strcmp(td,"'")==0) s=s + "''''||" + col + "||''''";
else s=s + "'" + td + "'||" + col + "||'" + td + "'";
}
else s=col;
return s;
}
TString HDbColCharType::getNvlSelectString(const char* col, const char* td,
const char* sNull) {
// Returns the name of the column enclosed in given text delimiter or specified
// null string if column value is null
TString s;
if (varLength>1) {
if (strcmp(td,"'")==0)
s=s + "''''||nvl(" + col + ",'" + sNull + "')||''''";
else s=s + "'" + td + "'||nvl(" + col + ",'" + sNull + "')||'"
+ td + "'";
}
else s=s + "nvl(" + col + ",'" + sNull + "')";
return s;
}
HDbColVcType::HDbColVcType(Int_t l) : HDbColumnType("VARCHAR2",l) {
// Constructor for type VARCHAR2 (default length 80)
if (l<=0) varLength=80;
}
TString HDbColVcType::getTypeString() {
// Returns the type string, e.g. "VARCHAR2(80)"
TString s=("VARCHAR2(");
char buf[10];
sprintf(buf,"%i",varLength);
s=s + buf + ")";
return s;
}
TString HDbColVcType::getSelectString(const char* col, const char* td) {
// Returns the name of the column enclosed in given text delimiter
TString s;
if (varLength>1) {
if (strcmp(td,"'")==0) s=s + "''''||" + col + "||''''";
else s=s + "'" + td + "'||" + col + "||'" + td + "'";
}
else s=col;
return s;
}
TString HDbColVcType::getNvlSelectString(const char* col, const char* td,
const char* sNull) {
// Returns the name of the column enclosed in given text delimiter or specified
// null string if column value is null
TString s;
if (varLength>1) {
if (strcmp(td,"'")==0)
s=s + "''''||nvl(" + col + ",'" + sNull + "')||''''";
else s=s + "'" + td + "'||nvl(" + col + ",'" + sNull + "')||'"
+ td + "'";
}
else s=s + "nvl(" + col + ",'" + sNull + "')";
return s;
}
HDbColNumType::HDbColNumType(Int_t p, Int_t s)
: HDbColumnType("NUMBER",sizeof(Double_t),p,s) {
// Constructor for type NUMBER with specified precision and scale (default precision 40)
if (p<=0) dataPrecision=40;
}
TString HDbColNumType::getTypeString() {
// Returns the type string "NUMBER(p,s)"
TString s=("NUMBER");
if (dataPrecision==40) return s;
char buf[100];
sprintf(buf,"%i",dataPrecision);
s=s + "(" + buf;
if (dataScale>=0) {
sprintf(buf,"%i",dataScale);
s=s + "," + buf;
}
s=s + ")";
return s;
}
TString HDbColNumType::getSelectString(const char* col, const char*) {
// Returns the string to convert the number column to characters
// null string if column value is null
TString s("to_char(");
s=s + col + ")";
return s;
}
TString HDbColNumType::getNvlSelectString(const char* col, const char*, const char* sNull) {
// Returns the string to convert the number column to characters or to replace by the
// specified null string if the column value is null
TString s("nvl(to_char(");
s=s + col + "),'" + sNull + "')";
return s;
}
HDbColDateType::HDbColDateType(Int_t l) : HDbColumnType("DATE",l) {
// Constructor for type DATE
if (l<=0) varLength=75;
}
TString HDbColDateType::getSelectString(const char* col, const char* td) {
// Returns the string to convert the date column to characters enclosed in specified
// text delimiter to allow a blank between the date and the time
TString s;
if (strcmp(td,"'")==0)
s=s + "''''||to_char(" + col + ")||''''";
else s=s + "'" + td + "'||to_char(" + col + ")||'" + td + "'";
return s;
}
TString HDbColDateType::getNvlSelectString(const char* col, const char* td,
const char* sNull) {
// Returns the string to convert the date column to characters enclosed in specified
// text delimiter to allow a blank between the date and the time
// or the specified null string if the column value is null
TString s;
if (strcmp(td,"'")==0)
s=s + "''''||nvl(to_char(" + col + "),'" + sNull + "')||''''";
else s=s + "'" + td + "'||nvl(to_char(" + col + "),'" + sNull + "')||'"
+ td + "'";
return s;
}
HDbColLongType::HDbColLongType(Int_t l) : HDbColumnType("LONG",l) {
// Constructor for type LONG (default length 32767)
// WARNING: This datatype is actually not supported!
if (l<=0) varLength=32767;
}
TString HDbColRowidType::getSelectString(const char* col, const char*) {
// Returns the string to convert the rowid column to characters
TString s("rowidtochar(");
s=s + col + ")";
return s;
}
TString HDbColRowidType::getNvlSelectString(const char* col, const char*,
const char* sNull) {
// Returns the string to convert the rowid column to characters or the specified
// null string if the column value is null
TString s("nvl(rowidtochar(");
s=s + col + "),'" + sNull + "')";
return s;
}
HDbColRawType::HDbColRawType(Int_t l) : HDbColumnType("RAW",l) {
// Constructor for type RAW (default length 255)
// WARNING: This datatype is actually not supported!
if (l<=0) varLength=255;
}
TString HDbColRawType::getTypeString() {
// Returns the type string, e.g. "RAW(255)"
TString s=("RAW(");
char buf[10];
sprintf(buf,"%i",varLength);
s=s + buf + ")";
return s;
}
ROOT page - Class index - Class Hierarchy - Top of the page
This page has been automatically generated. If you have any comments or suggestions about the page layout send a mail to ROOT support, or contact the developers with any questions or problems regarding ROOT.