#ifndef SQL_CRSR
# define SQL_CRSR
struct sql_cursor
{
unsigned int curocn;
void *ptr1;
void *ptr2;
unsigned int magic;
};
typedef struct sql_cursor sql_cursor;
typedef struct sql_cursor SQL_CURSOR;
#endif /* SQL_CRSR */
typedef void * sql_context;
typedef void * SQL_CONTEXT;
struct sqltvn
{
unsigned char *tvnvsn;
unsigned short tvnvsnl;
unsigned char *tvnnm;
unsigned short tvnnml;
unsigned char *tvnsnm;
unsigned short tvnsnml;
};
typedef struct sqltvn sqltvn;
struct sqladts
{
unsigned int adtvsn;
unsigned short adtmode;
unsigned short adtnum;
sqltvn adttvn[1];
};
typedef struct sqladts sqladts;
static struct sqladts sqladt = {
1,1,0,
};
struct sqltdss
{
unsigned int tdsvsn;
unsigned short tdsnum;
unsigned char *tdsval[1];
};
typedef struct sqltdss sqltdss;
static struct sqltdss sqltds =
{
1,
0,
};
struct sqlcxp
{
unsigned short fillen;
char filnam[12];
};
static const struct sqlcxp sqlfpn =
{
11,
"hdbtable.pc"
};
static unsigned int sqlctx = 144643;
static struct sqlexd {
unsigned int sqlvsn;
unsigned int arrsiz;
unsigned int iters;
unsigned int offset;
unsigned short selerr;
unsigned short sqlety;
unsigned int occurs;
const short *cud;
unsigned char *sqlest;
const char *stmt;
sqladts *sqladtp;
sqltdss *sqltdsp;
void **sqphsv;
unsigned int *sqphsl;
int *sqphss;
void **sqpind;
int *sqpins;
unsigned int *sqparm;
unsigned int **sqparc;
unsigned short *sqpadto;
unsigned short *sqptdso;
unsigned int sqlcmax;
unsigned int sqlcmin;
unsigned int sqlcincr;
unsigned int sqlctimeout;
unsigned int sqlcnowait;
int sqfoff;
unsigned int sqcmod;
unsigned int sqfmod;
void *sqhstv[7];
unsigned int sqhstl[7];
int sqhsts[7];
void *sqindv[7];
int sqinds[7];
unsigned int sqharm[7];
unsigned int *sqharc[7];
unsigned short sqadto[7];
unsigned short sqtdso[7];
} sqlstm = {12,7};
extern "C" {
void sqlcxt (void **, unsigned int *,
struct sqlexd *, const struct sqlcxp *);
void sqlcx2t(void **, unsigned int *,
struct sqlexd *, const struct sqlcxp *);
void sqlbuft(void **, char *);
void sqlgs2t(void **, char *);
void sqlorat(void **, unsigned int *, void *);
}
static const int IAPSUCC = 0;
static const int IAPFAIL = 1403;
static const int IAPFTL = 535;
extern "C" { void sqliem(char *, int *); }
typedef struct { unsigned short len; unsigned char arr[1]; } VARCHAR;
typedef struct { unsigned short len; unsigned char arr[1]; } varchar;
static const short sqlcud0[] =
{12,4130,1,0,0,
5,0,0,1,0,0,17,225,0,0,1,1,0,1,0,1,97,0,0,
24,0,0,1,0,0,45,227,0,0,0,0,0,1,0,
39,0,0,1,0,0,13,228,0,0,7,0,0,1,0,2,9,0,0,2,3,0,0,2,3,0,0,2,9,0,0,2,3,0,0,2,3,
0,0,2,9,0,0,
82,0,0,1,0,0,15,248,0,0,0,0,0,1,0,
97,0,0,2,0,0,17,377,0,0,1,1,0,1,0,1,97,0,0,
116,0,0,2,0,0,45,379,0,0,0,0,0,1,0,
131,0,0,2,0,0,13,382,0,0,1,0,0,1,0,2,9,0,0,
150,0,0,2,0,0,15,390,0,0,0,0,0,1,0,
165,0,0,2,0,0,15,394,0,0,0,0,0,1,0,
};
using namespace std;
#include "hdbtable.h"
#include "hdbconn.h"
#include "hdbfileutil.h"
#include "hdbcolumn.h"
#include "hdbcolumntype.h"
#include <stdio.h>
#include <iostream>
#include <iomanip>
#define SQLCA_STORAGE_CLASS extern
#define ORACA_STORAGE_CLASS extern
#include <oraca.h>
#include <sqlca.h>
ClassImp(HDbTable)
#define MAXCOLNUM 254
#define MAXROWS 200
HDbTable::HDbTable() {
dbConn=0;
dbUtil=0;
tabColumns=new TList;
nColumns=0;
tempTable=kFALSE;
existing=kTRUE;
}
HDbTable::HDbTable(HDbConn* p, HDbFileUtil* u, const Char_t* tName) {
dbConn=p;
dbUtil=u;
setNames(tName);
tabColumns=new TList;
nColumns=0;
tempTable=kFALSE;
existing=kTRUE;
}
HDbTable::HDbTable(HDbConn* p, HDbFileUtil* u, HDbTable& t) {
dbConn=p;
dbUtil=u;
setNames(t.GetName());
tabColumns=new TList;
nColumns=t.getNColumns();
for(Int_t i=0;i<nColumns;i++) {
HDbColumn* tc=t.getColumn(i);
HDbColumn* c=new HDbColumn(*tc);
tabColumns->Add(c);
}
tempTable=t.isTempTable();
existing=t.isExisting();
}
HDbTable::~HDbTable() {
if (tabColumns) {
tabColumns->Delete();
delete tabColumns;
}
}
HDbColumn* HDbTable::getColumn(Int_t n) {
return (HDbColumn*)tabColumns->At(n);
}
HDbColumn* HDbTable::getColumn(const Char_t* colName) {
if (colName) {
TString c(colName);
c=c.Strip(c.kBoth);
if (c.Length()>0)
c.ToUpper();
return (HDbColumn*)tabColumns->FindObject(c.Data());
}
return 0;
}
HDbColumn* HDbTable::addColumn(const Char_t* colName, const Char_t* columnType) {
HDbColumn* p=0;
TString c(colName);
c=c.Strip(c.kBoth);
c.ToUpper();
if (tabColumns->FindObject(c.Data()))
cout<<"Column "<<c<<" already exists!"<<endl;
else {
p=new HDbColumn(c.Data());
if(columnType) p->setColType(columnType);
tabColumns->Add(p);
nColumns++;
}
return p;
}
void HDbTable::addColumn(HDbColumn* p) {
if (!p) return;
if (!tabColumns->FindObject(p->GetName())) {
HDbColumn* c=new HDbColumn(*p);
tabColumns->Add(c);
nColumns++;
}
else cout<<"Column "<<p->GetName()<<" already exists!"<<endl;
}
void HDbTable::removeColumn(const Char_t* colName) {
HDbColumn* p=getColumn(colName);
if (p) {
tabColumns->Remove(p);
delete p;
nColumns--;
}
}
void HDbTable::clearColumns() {
tabColumns->Delete();
nColumns=0;
}
void HDbTable::setColumns(const Char_t* colNames, const Char_t* colTypes) {
TString sNames, sTypes;
Int_t nlen=0, tlen=0;
if (colNames) {
sNames=colNames;
sNames.Strip(sNames.kBoth);
sNames.ToUpper();
nlen=sNames.Length();
}
if (colTypes) {
sTypes=colTypes;
sTypes.Strip(sTypes.kBoth);
sTypes.ToUpper();
tlen=sTypes.Length();
}
if (nlen==0) {
Error("HDbTable::setColumns","List of column is empty ");
return;
}
TString ssn, sst;
while (nlen>0) {
nlen=dbUtil->getTokString(sNames,ssn,",");
if (tlen>0) {
tlen=dbUtil->getTokString(sTypes,sst,",");
if (sst.First("(")>0 && sst.First(")")<0) {
TString s;
tlen=dbUtil->getTokString(sTypes,s,",");
sst=sst + "," + s;
}
addColumn(ssn.Data(),sst.Data());
} else addColumn(ssn.Data(),colDefaultType);
}
}
void HDbTable::setCondition(const Char_t* s) {
if (s) {
cond=s;
cond=cond.Strip(cond.kBoth);
cond.ToUpper();
} else cond="";
}
void HDbTable::setOrderBy(const Char_t* s) {
if (s) {
orderClause=s;
orderClause=orderClause.Strip(orderClause.kBoth);
orderClause.ToUpper();
} else orderClause="";
}
Bool_t HDbTable::describeTable() {
if (!dbConn->isOpen()) return kFALSE;
tempTable=kFALSE;
existing=kTRUE;
clearColumns();
char* dynstmt;
struct { unsigned short len; unsigned char arr[30]; } colName[254];
int colId[MAXCOLNUM];
int dLen[MAXCOLNUM];
struct { unsigned short len; unsigned char arr[30]; } colType[254];
int dPrec[MAXCOLNUM];
int dScale[MAXCOLNUM];
struct { unsigned short len; unsigned char arr[2]; } nn[254];
TString s(("select column_name,column_id,data_length,data_type,"
"nvl(data_precision,0),nvl(data_scale,0), nullable "
"from all_tab_columns where table_name='"));
s=s + tabName + "' and owner='" + tabOwner +"' order by column_id";
dynstmt=(Char_t*)s.Data();
{
struct sqlexd sqlstm;
sqlorat((void **)0, &sqlctx, &oraca);
sqlstm.sqlvsn = 12;
sqlstm.arrsiz = 1;
sqlstm.sqladtp = &sqladt;
sqlstm.sqltdsp = &sqltds;
sqlstm.stmt = "";
sqlstm.iters = (unsigned int )1;
sqlstm.offset = (unsigned int )5;
sqlstm.cud = sqlcud0;
sqlstm.sqlest = (unsigned char *)&sqlca;
sqlstm.sqlety = (unsigned short)256;
sqlstm.occurs = (unsigned int )0;
sqlstm.sqhstv[0] = ( void *)dynstmt;
sqlstm.sqhstl[0] = (unsigned int )0;
sqlstm.sqhsts[0] = ( int )0;
sqlstm.sqindv[0] = ( void *)0;
sqlstm.sqinds[0] = ( int )0;
sqlstm.sqharm[0] = (unsigned int )0;
sqlstm.sqadto[0] = (unsigned short )0;
sqlstm.sqtdso[0] = (unsigned short )0;
sqlstm.sqphsv = sqlstm.sqhstv;
sqlstm.sqphsl = sqlstm.sqhstl;
sqlstm.sqphss = sqlstm.sqhsts;
sqlstm.sqpind = sqlstm.sqindv;
sqlstm.sqpins = sqlstm.sqinds;
sqlstm.sqparm = sqlstm.sqharm;
sqlstm.sqparc = sqlstm.sqharc;
sqlstm.sqpadto = sqlstm.sqadto;
sqlstm.sqptdso = sqlstm.sqtdso;
sqlcxt((void **)0, &sqlctx, &sqlstm, &sqlfpn);
if (sqlca.sqlcode < 0) goto errorFound;
}
{
struct sqlexd sqlstm;
sqlorat((void **)0, &sqlctx, &oraca);
sqlstm.sqlvsn = 12;
sqlstm.arrsiz = 1;
sqlstm.sqladtp = &sqladt;
sqlstm.sqltdsp = &sqltds;
sqlstm.stmt = "";
sqlstm.iters = (unsigned int )1;
sqlstm.offset = (unsigned int )24;
sqlstm.selerr = (unsigned short)1;
sqlstm.cud = sqlcud0;
sqlstm.sqlest = (unsigned char *)&sqlca;
sqlstm.sqlety = (unsigned short)256;
sqlstm.occurs = (unsigned int )0;
sqlstm.sqcmod = (unsigned int )0;
sqlcxt((void **)0, &sqlctx, &sqlstm, &sqlfpn);
if (sqlca.sqlcode < 0) goto errorFound;
}
{
struct sqlexd sqlstm;
sqlorat((void **)0, &sqlctx, &oraca);
sqlstm.sqlvsn = 12;
sqlstm.arrsiz = 7;
sqlstm.sqladtp = &sqladt;
sqlstm.sqltdsp = &sqltds;
sqlstm.iters = (unsigned int )254;
sqlstm.offset = (unsigned int )39;
sqlstm.selerr = (unsigned short)1;
sqlstm.cud = sqlcud0;
sqlstm.sqlest = (unsigned char *)&sqlca;
sqlstm.sqlety = (unsigned short)256;
sqlstm.occurs = (unsigned int )0;
sqlstm.sqfoff = ( int )0;
sqlstm.sqfmod = (unsigned int )2;
sqlstm.sqhstv[0] = ( void *)colName;
sqlstm.sqhstl[0] = (unsigned int )32;
sqlstm.sqhsts[0] = ( int )32;
sqlstm.sqindv[0] = ( void *)0;
sqlstm.sqinds[0] = ( int )0;
sqlstm.sqharm[0] = (unsigned int )0;
sqlstm.sqharc[0] = (unsigned int *)0;
sqlstm.sqadto[0] = (unsigned short )0;
sqlstm.sqtdso[0] = (unsigned short )0;
sqlstm.sqhstv[1] = ( void *)colId;
sqlstm.sqhstl[1] = (unsigned int )sizeof(int);
sqlstm.sqhsts[1] = ( int )sizeof(int);
sqlstm.sqindv[1] = ( void *)0;
sqlstm.sqinds[1] = ( int )0;
sqlstm.sqharm[1] = (unsigned int )0;
sqlstm.sqharc[1] = (unsigned int *)0;
sqlstm.sqadto[1] = (unsigned short )0;
sqlstm.sqtdso[1] = (unsigned short )0;
sqlstm.sqhstv[2] = ( void *)dLen;
sqlstm.sqhstl[2] = (unsigned int )sizeof(int);
sqlstm.sqhsts[2] = ( int )sizeof(int);
sqlstm.sqindv[2] = ( void *)0;
sqlstm.sqinds[2] = ( int )0;
sqlstm.sqharm[2] = (unsigned int )0;
sqlstm.sqharc[2] = (unsigned int *)0;
sqlstm.sqadto[2] = (unsigned short )0;
sqlstm.sqtdso[2] = (unsigned short )0;
sqlstm.sqhstv[3] = ( void *)colType;
sqlstm.sqhstl[3] = (unsigned int )32;
sqlstm.sqhsts[3] = ( int )32;
sqlstm.sqindv[3] = ( void *)0;
sqlstm.sqinds[3] = ( int )0;
sqlstm.sqharm[3] = (unsigned int )0;
sqlstm.sqharc[3] = (unsigned int *)0;
sqlstm.sqadto[3] = (unsigned short )0;
sqlstm.sqtdso[3] = (unsigned short )0;
sqlstm.sqhstv[4] = ( void *)dPrec;
sqlstm.sqhstl[4] = (unsigned int )sizeof(int);
sqlstm.sqhsts[4] = ( int )sizeof(int);
sqlstm.sqindv[4] = ( void *)0;
sqlstm.sqinds[4] = ( int )0;
sqlstm.sqharm[4] = (unsigned int )0;
sqlstm.sqharc[4] = (unsigned int *)0;
sqlstm.sqadto[4] = (unsigned short )0;
sqlstm.sqtdso[4] = (unsigned short )0;
sqlstm.sqhstv[5] = ( void *)dScale;
sqlstm.sqhstl[5] = (unsigned int )sizeof(int);
sqlstm.sqhsts[5] = ( int )sizeof(int);
sqlstm.sqindv[5] = ( void *)0;
sqlstm.sqinds[5] = ( int )0;
sqlstm.sqharm[5] = (unsigned int )0;
sqlstm.sqharc[5] = (unsigned int *)0;
sqlstm.sqadto[5] = (unsigned short )0;
sqlstm.sqtdso[5] = (unsigned short )0;
sqlstm.sqhstv[6] = ( void *)nn;
sqlstm.sqhstl[6] = (unsigned int )3;
sqlstm.sqhsts[6] = ( int )4;
sqlstm.sqindv[6] = ( void *)0;
sqlstm.sqinds[6] = ( int )0;
sqlstm.sqharm[6] = (unsigned int )0;
sqlstm.sqharc[6] = (unsigned int *)0;
sqlstm.sqadto[6] = (unsigned short )0;
sqlstm.sqtdso[6] = (unsigned short )0;
sqlstm.sqphsv = sqlstm.sqhstv;
sqlstm.sqphsl = sqlstm.sqhstl;
sqlstm.sqphss = sqlstm.sqhsts;
sqlstm.sqpind = sqlstm.sqindv;
sqlstm.sqpins = sqlstm.sqinds;
sqlstm.sqparm = sqlstm.sqharm;
sqlstm.sqparc = sqlstm.sqharc;
sqlstm.sqpadto = sqlstm.sqadto;
sqlstm.sqptdso = sqlstm.sqtdso;
sqlcxt((void **)0, &sqlctx, &sqlstm, &sqlfpn);
if (sqlca.sqlcode < 0) goto errorFound;
}
nColumns=sqlca.sqlerrd[2];
if (nColumns<=0) {
cout<<"Table "<<GetName()<<" does not exist!"<<endl;
tempTable=kTRUE;
existing=kFALSE;
return kFALSE;
}
for(Int_t i=0;i<nColumns;i++) {
colName[i].arr[colName[i].len]='\0';
colType[i].arr[colType[i].len]='\0';
HDbColumn* p=new HDbColumn((const Char_t*)colName[i].arr);
p->setColumnId(colId[i]);
p->setColType((const Char_t*)colType[i].arr,dLen[i],dPrec[i],dScale[i]);
if (nn[i].arr[0]=='N') p->setNullable(kFALSE);
tabColumns->Add(p);
}
return kTRUE;
errorFound:
dbUtil->showSqlError("HDbTable::describeTable");
{
struct sqlexd sqlstm;
sqlorat((void **)0, &sqlctx, &oraca);
sqlstm.sqlvsn = 12;
sqlstm.arrsiz = 7;
sqlstm.sqladtp = &sqladt;
sqlstm.sqltdsp = &sqltds;
sqlstm.iters = (unsigned int )1;
sqlstm.offset = (unsigned int )82;
sqlstm.cud = sqlcud0;
sqlstm.sqlest = (unsigned char *)&sqlca;
sqlstm.sqlety = (unsigned short)256;
sqlstm.occurs = (unsigned int )0;
sqlcxt((void **)0, &sqlctx, &sqlstm, &sqlfpn);
if (sqlca.sqlcode < 0) goto errorFound;
}
return kFALSE;
}
Bool_t HDbTable::createTable() {
if (!dbConn->isOpen() || dbConn->isReadonly()) return kFALSE;
if (nColumns==0) {
Error("HDbTable::createTable()","No columns defined");
return kFALSE;
}
if (tabOwner.CompareTo(dbConn->getUserName())!=0) {
Error("HDbTable::createTable()","Table cannot be created in an other user account");
return kFALSE;
}
TString str="create table ";
str=str + GetName() + " (\n ";
TIter next(tabColumns);
HDbColumn* p;
Int_t n=0;
while ((p=(HDbColumn*)next())) {
str=str + p->GetName() + " " + p->getColType()->getTypeString();
if (!p->isNullable()) str=str + " " + "NOT NULL";
if (++n<nColumns) str=str + ",\n ";
}
str=str + " )";
cout<<"-----------------------------------------"<<endl;
cout<<"------------- Create table ------------"<<endl;
cout<<"-----------------------------------------"<<endl;
cout<<str<<endl;
if (dbUtil->confirm("creation")==kFALSE) return kFALSE;
Bool_t rc=dbUtil->executeDirect(str);
if (rc) {
cout<<"Temporary table "<<GetName()<<" created."<<endl;
tempTable=kTRUE;
existing=kTRUE;
}
return rc;
}
Bool_t HDbTable::dropTable() {
if (!dbConn->isOpen() || dbConn->isReadonly()) return kFALSE;
if (!tempTable) {
Error("HDbTable::dropTable","\nCannot drop permanent table %s",
GetName());
return kFALSE;
}
if (!existing) {
Error("HDbTable::dropTable","Table does not exist");
return kFALSE;
}
if (tabOwner.CompareTo(dbConn->getUserName())!=0) {
Error("HDbTable::dropTable","\nA table in an other user account cannot be dropped");
return kFALSE;
}
TString s("drop table ");
s=s + GetName(); TString tabOwner;
cout<<"-----------------------------------------"<<endl;
cout<<"------------- Drop table --------------"<<endl;
cout<<"-----------------------------------------"<<endl;
cout<<s<<endl;
if (dbUtil->confirm("drop")==kFALSE) return kFALSE;
Bool_t rc=dbUtil->executeDirect(s);
if (rc) cout<<"Temporary table "<<GetName()<<" dropped."<<endl;
return rc;
}
void HDbTable::show() {
TIter next(tabColumns);
HDbColumn* p;
cout<<"---------------------------------------------------------------------"<<endl;
cout<<" Table: "<<GetName();
if (tempTable) {
if (existing) cout<<" (Existing temporary table)"<<endl;
else cout<<" (Non-existing temporary table)"<<endl;
}
else cout<<" (Permanent table)"<<endl;
cout<<setiosflags(ios::left)<<setw(30)<<"ColumnName"
<<setw(4) <<"NN"
<<setw(12)<<"ColumnType"
<<setw(6) <<"Size"
<<setw(12)<<"Precision"
<<setw(12)<<"Scale"<<endl;
cout<<"---------------------------------------------------------------------"<<endl;
while ((p=(HDbColumn*)next())) {
p->show();
}
}
Int_t HDbTable::writeTable(ostream& pout, const Char_t* colDelim,
const Char_t* textDelim, const Char_t* nullString) {
if (!dbConn->isOpen()) {
cout<<"Connection closed before end of reading!"<<endl;
return -1;
}
TString stm("select ");
HDbColumn* p;
TString c;
for(Int_t i=0;i<nColumns;i++) {
p=(HDbColumn*)tabColumns->At(i);
if (p->isNullable())
c=p->getColType()->getNvlSelectString(p->GetName(),textDelim,nullString);
else c=p->getColType()->getSelectString(p->GetName(),textDelim);
if (c.Length()==0) return -1;
stm=stm + c;
if (i<(nColumns-1)) stm=stm + "||'" + colDelim + "'||";
}
stm=stm + "from " + GetName();
if (cond.Length()>0) {
stm=stm + " where " + cond;
pout<<"// Condition: "<<cond<<endl;
}
if (orderClause.Length()>0) {
stm=stm + " order by " + orderClause;
pout<<"// Order by: "<<orderClause<<endl;
}
char* dynstmt;
struct { unsigned short len; unsigned char arr[4002]; } sResult[200];
dynstmt=(Char_t*)stm.Data();
Int_t nbs=0, nbslast=0;
{
struct sqlexd sqlstm;
sqlorat((void **)0, &sqlctx, &oraca);
sqlstm.sqlvsn = 12;
sqlstm.arrsiz = 7;
sqlstm.sqladtp = &sqladt;
sqlstm.sqltdsp = &sqltds;
sqlstm.stmt = "";
sqlstm.iters = (unsigned int )1;
sqlstm.offset = (unsigned int )97;
sqlstm.cud = sqlcud0;
sqlstm.sqlest = (unsigned char *)&sqlca;
sqlstm.sqlety = (unsigned short)256;
sqlstm.occurs = (unsigned int )0;
sqlstm.sqhstv[0] = ( void *)dynstmt;
sqlstm.sqhstl[0] = (unsigned int )0;
sqlstm.sqhsts[0] = ( int )0;
sqlstm.sqindv[0] = ( void *)0;
sqlstm.sqinds[0] = ( int )0;
sqlstm.sqharm[0] = (unsigned int )0;
sqlstm.sqadto[0] = (unsigned short )0;
sqlstm.sqtdso[0] = (unsigned short )0;
sqlstm.sqphsv = sqlstm.sqhstv;
sqlstm.sqphsl = sqlstm.sqhstl;
sqlstm.sqphss = sqlstm.sqhsts;
sqlstm.sqpind = sqlstm.sqindv;
sqlstm.sqpins = sqlstm.sqinds;
sqlstm.sqparm = sqlstm.sqharm;
sqlstm.sqparc = sqlstm.sqharc;
sqlstm.sqpadto = sqlstm.sqadto;
sqlstm.sqptdso = sqlstm.sqtdso;
sqlcxt((void **)0, &sqlctx, &sqlstm, &sqlfpn);
if (sqlca.sqlcode < 0) goto errorFound;
}
{
struct sqlexd sqlstm;
sqlorat((void **)0, &sqlctx, &oraca);
sqlstm.sqlvsn = 12;
sqlstm.arrsiz = 7;
sqlstm.sqladtp = &sqladt;
sqlstm.sqltdsp = &sqltds;
sqlstm.stmt = "";
sqlstm.iters = (unsigned int )1;
sqlstm.offset = (unsigned int )116;
sqlstm.selerr = (unsigned short)1;
sqlstm.cud = sqlcud0;
sqlstm.sqlest = (unsigned char *)&sqlca;
sqlstm.sqlety = (unsigned short)256;
sqlstm.occurs = (unsigned int )0;
sqlstm.sqcmod = (unsigned int )0;
sqlcxt((void **)0, &sqlctx, &sqlstm, &sqlfpn);
if (sqlca.sqlcode < 0) goto errorFound;
}
do {
{
struct sqlexd sqlstm;
sqlorat((void **)0, &sqlctx, &oraca);
sqlstm.sqlvsn = 12;
sqlstm.arrsiz = 7;
sqlstm.sqladtp = &sqladt;
sqlstm.sqltdsp = &sqltds;
sqlstm.iters = (unsigned int )200;
sqlstm.offset = (unsigned int )131;
sqlstm.selerr = (unsigned short)1;
sqlstm.cud = sqlcud0;
sqlstm.sqlest = (unsigned char *)&sqlca;
sqlstm.sqlety = (unsigned short)256;
sqlstm.occurs = (unsigned int )0;
sqlstm.sqfoff = ( int )0;
sqlstm.sqfmod = (unsigned int )2;
sqlstm.sqhstv[0] = ( void *)sResult;
sqlstm.sqhstl[0] = (unsigned int )4002;
sqlstm.sqhsts[0] = ( int )4004;
sqlstm.sqindv[0] = ( void *)0;
sqlstm.sqinds[0] = ( int )0;
sqlstm.sqharm[0] = (unsigned int )0;
sqlstm.sqharc[0] = (unsigned int *)0;
sqlstm.sqadto[0] = (unsigned short )0;
sqlstm.sqtdso[0] = (unsigned short )0;
sqlstm.sqphsv = sqlstm.sqhstv;
sqlstm.sqphsl = sqlstm.sqhstl;
sqlstm.sqphss = sqlstm.sqhsts;
sqlstm.sqpind = sqlstm.sqindv;
sqlstm.sqpins = sqlstm.sqinds;
sqlstm.sqparm = sqlstm.sqharm;
sqlstm.sqparc = sqlstm.sqharc;
sqlstm.sqpadto = sqlstm.sqadto;
sqlstm.sqptdso = sqlstm.sqtdso;
sqlcxt((void **)0, &sqlctx, &sqlstm, &sqlfpn);
if (sqlca.sqlcode < 0) goto errorFound;
}
nbs=sqlca.sqlerrd[2] - nbslast;
nbslast+=nbs;
for(Int_t i=0;i<nbs;i++) {
sResult[i].arr[sResult[i].len]='\0';
pout<<(Char_t*)sResult[i].arr<<endl;
}
} while (nbs==MAXROWS);
{
struct sqlexd sqlstm;
sqlorat((void **)0, &sqlctx, &oraca);
sqlstm.sqlvsn = 12;
sqlstm.arrsiz = 7;
sqlstm.sqladtp = &sqladt;
sqlstm.sqltdsp = &sqltds;
sqlstm.iters = (unsigned int )1;
sqlstm.offset = (unsigned int )150;
sqlstm.cud = sqlcud0;
sqlstm.sqlest = (unsigned char *)&sqlca;
sqlstm.sqlety = (unsigned short)256;
sqlstm.occurs = (unsigned int )0;
sqlcxt((void **)0, &sqlctx, &sqlstm, &sqlfpn);
if (sqlca.sqlcode < 0) goto errorFound;
}
return nbslast;
errorFound:
dbUtil->showSqlError("HDbTable::writeTable");
{
struct sqlexd sqlstm;
sqlorat((void **)0, &sqlctx, &oraca);
sqlstm.sqlvsn = 12;
sqlstm.arrsiz = 7;
sqlstm.sqladtp = &sqladt;
sqlstm.sqltdsp = &sqltds;
sqlstm.iters = (unsigned int )1;
sqlstm.offset = (unsigned int )165;
sqlstm.cud = sqlcud0;
sqlstm.sqlest = (unsigned char *)&sqlca;
sqlstm.sqlety = (unsigned short)256;
sqlstm.occurs = (unsigned int )0;
sqlcxt((void **)0, &sqlctx, &sqlstm, &sqlfpn);
if (sqlca.sqlcode < 0) goto errorFound;
}
cout<<"SQL statement:"<<endl<<stm<<endl;
return -1;
}
void HDbTable::setNames(const Char_t* tName) {
TString s(tName);
s.ToUpper();
s=s.Strip(s.kBoth);
Ssiz_t n=s.First(".");
if (n>0) {
SetName(s.Data());
tabOwner=s(0,n);
tabName=s(++n,s.Length()-n);
} else {
tabOwner=dbConn->getUserName();
tabName=s;
s=tabOwner;
s=s + "." + tabName;
SetName(s.Data());
}
}
Last change: Sat May 22 12:54:31 2010
Last generated: 2010-05-22 12:54
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.