Main Page   Class Hierarchy   Alphabetical List   Compound List   File List   Compound Members   File Members   Related Pages  

otl_utils.cpp

Go to the documentation of this file.
00001 //============================================================================= 
00002 //
00003 // XDFLengine library
00004 //
00005 //----------------------------------------------------------------------------- 
00006 //  OTL_UTILS.CPP
00007 //----------------------------------------------------------------------------- 
00013 //_____________________________________________________________________________
00014 //
00015 //  Copyright (C) 2003 Guillaume Baurand. All Rights Reserved.
00016 //
00017 //  This file is part of the XDFLengine project.
00018 //
00019 //  The XDFLengine is free software; you can redistribute it and/or modify
00020 //  it under the terms of the GNU General Public License as published by
00021 //  the Free Software Foundation; either version 2 of the License, or
00022 //  (at your option) any later version.
00023 //
00024 //  This program is distributed in the hope that it will be useful,
00025 //  but WITHOUT ANY WARRANTY; without even the implied warranty of
00026 //  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00027 //  GNU General Public License for more details.
00028 //
00029 //  You should have received a copy of the GNU General Public License
00030 //  along with this program; if not, write to the Free Software
00031 //  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,
00032 //  USA.
00033 //
00034 //  For more information, 
00035 //      contact  : guillaume@baurand.net 
00036 //      or visit : http://xdflengine.sourceforge.net
00037 //
00038 //============================================================================= 
00039 
00040 
00041 #   include "otl_utils.hpp"
00042  
00043 BEGIN_XDFLENGINE_NS
00044 
00045     //_________________________________________________________________________
00046     //  OTL_OPENDATASTREAM
00047     //-------------------------------------------------------------------------
00048     otl_stream* OTL_openDataStream(const char* p_pszSQLStatement, otl_connect* p_pConnection,unsigned int p_uiBufSize)
00049     {
00050         otl_stream* l_rsData=0;
00051         //char* msg;
00052 
00053         DEBUG_IN(OTL_openDataStream)
00054 
00055         DEBUG_ECHO << "Opening data stream for :" << p_pszSQLStatement << "\n";
00056 
00057         //execute SQL
00058         l_rsData=new otl_stream();
00059 
00060         l_rsData->set_flush( false);
00061         l_rsData->set_commit( false);
00062         l_rsData->set_all_column_types(otl_all_num2str | otl_all_date2str);  // set all columns to strings
00063         try
00064         { 
00065             l_rsData->open( p_uiBufSize, p_pszSQLStatement, (*p_pConnection));  
00066         }
00067         catch(otl_exception& p)
00068         { 
00069             DEBUG_OUT(OTL_openDataStream)
00070             OTL_releaseDataStream( l_rsData);
00071             throw p;
00072         }
00073 
00074         DEBUG_OUT(OTL_openDataStream)
00075 
00076         return l_rsData;
00077     }
00078 
00079     //_________________________________________________________________________
00080     //  OTL_RELEASEDATASTREAM
00081     //-------------------------------------------------------------------------
00082     void OTL_releaseDataStream(otl_stream* p_pOTLStream)
00083     {
00084         DEBUG_IN(OTL_releaseDataStream)
00085 
00086         if( p_pOTLStream)
00087         {
00088             //p_pOTLStream->clean(0);
00089             p_pOTLStream->close();
00090             delete p_pOTLStream;
00091             p_pOTLStream=0;
00092         }
00093 
00094         DEBUG_OUT(OTL_releaseDataStream)
00095     }
00096 
00097     //_________________________________________________________________________
00098     //  OTL_INSERTINVAR
00099     //-------------------------------------------------------------------------
00100     void OTL_insertInVar(otl_stream* p_pOTLStream, int p_intOTLType, const char* p_pszVarValue)
00101     {
00102         otl_null l_nullval;
00103         char * l_pszTmp=0;
00104 
00105         DEBUG_IN(OTL_insertInVar)
00106 
00107         //logout << "\t" << "DB <- " << p_pszVarValue << "...";
00108             try
00109             {   
00110                 if( ! p_pszVarValue)
00111                 {
00112                     (*p_pOTLStream) << l_nullval;
00113                 }
00114                 else
00115                 {
00116                     if( strcmp( p_pszVarValue, REQ_NULL) == 0)
00117                     {
00118                         (*p_pOTLStream) << l_nullval;
00119                     }
00120                     else
00121                     {
00122                         //logout  << "DB<-" << p_pszVarValue <<  "(" << p_intOTLType << ")\n";
00123 
00124                         //m_rsData->inc_next_iov();
00125                         switch( p_intOTLType)
00126                         {
00127                             case otl_var_char:        // null terminated string (code=1) 
00128                                 //logout << "\t" << SQLSTREAMER_TAGNAME<< "   :   " << "char:" << p_pszVarValue;
00129                                 (*p_pOTLStream) << (const char*) p_pszVarValue ;             
00130                                 break;
00131                             case otl_var_double:        // 8-byte floating point number (code=2) 
00132                                 l_pszTmp = replaceInCharBuffer(p_pszVarValue,",",".");
00133                                 //logout << "\t" << SQLSTREAMER_TAGNAME<< "   :   " << "double:" << (double) atof(p_pszVarValue);
00134                                 (*p_pOTLStream) <<  (double) atof(l_pszTmp);               
00135                                 break; 
00136                             case otl_var_float:      // 4-byte floating point number (code=3) 
00137                                 l_pszTmp = replaceInCharBuffer(p_pszVarValue,",",".");
00138                                 //logout << "\t" << SQLSTREAMER_TAGNAME<< "   :   " << "float:" << (double)  atof(p_pszVarValue);
00139                                 (*p_pOTLStream) << (double)  atof(l_pszTmp);
00140                                 break;  
00141                             case otl_var_int:          // 32-bit signed integer (code=4) 
00142                                 //logout << "\t" << SQLSTREAMER_TAGNAME<< "   :   " << "int:" << (int) atoi(p_pszVarValue);
00143                                 (*p_pOTLStream) << (int) atoi(p_pszVarValue);
00144                                 break;  
00145                             case otl_var_unsigned_int:  // 32-bit unsigned integer (code=5) 
00146                                 //logout << "\t" << SQLSTREAMER_TAGNAME<< "   :   " << "unsigned int:" << (unsigned int)atoi(p_pszVarValue);
00147                                 (*p_pOTLStream) << (unsigned int)atoi(p_pszVarValue);
00148                                 break;  
00149                             case otl_var_short:      // 16-bit signed integer (code=6) 
00150                                 //logout << "\t" << SQLSTREAMER_TAGNAME<< "   :   " << "short" << (short) atoi(p_pszVarValue);
00151                                 (*p_pOTLStream) << (short) atoi(p_pszVarValue);
00152                                 break;  
00153                             case otl_var_long_int:    // 32-signed integer (code=7) 
00154                                 //logout << "\t" << SQLSTREAMER_TAGNAME<< "   :   " << "long int" << (long) atol(p_pszVarValue);
00155                                 (*p_pOTLStream)  << (long) atol(p_pszVarValue);
00156                                 break;  
00157                             case otl_var_timestamp:  // datatype that is mapped into TIMESTAMP_STRUCT, ODBC and DB2-CLI only (code=8)  
00158                                 //logout << "\t" << SQLSTREAMER_TAGNAME<< "   :   " << "timestamp" <<   p_pszVarValue;
00159                                 (*p_pOTLStream) <<  p_pszVarValue;
00160                                 break; 
00161                             case otl_var_varchar_long:  // datatype that is mapped into LONG in Oracle 7/8, TEXT in MS SQL Server and Sybase, CLOB in DB2 (code=9), 
00162                                 //logout << "\t" << SQLSTREAMER_TAGNAME<< "   :   " << "varchar_long" << p_pszVarValue;
00163                                 (*p_pOTLStream) <<  p_pszVarValue;
00164                                 break;
00165                             case otl_var_raw_long:    // datatype that is mapped into LONG RAW in Oracle 7/8, IMAGE in MS SQL Server ad Sybase, BLOB in DB2 (code=10) 
00166                                 (*p_pOTLStream) <<  p_pszVarValue;
00167                                 break;
00168                             case otl_var_clob:        // datatype that is mapped into CLOB in Oracle 8 (code=11) 
00169                                 (*p_pOTLStream) <<  p_pszVarValue;
00170                                 break;
00171                             case otl_var_blob:        // datatype that is mapped into BLOB in Oracle 8 (code=12) 
00172                                 (*p_pOTLStream) <<  p_pszVarValue;
00173                                 break;
00174                         }
00175                     }
00176                 }
00177                 
00178             }
00179             catch(otl_exception& p)
00180             { // intercept OTL exceptions
00181                 l_pszTmp = releaseCharBuffer(l_pszTmp);
00182                 DEBUG_OUT(OTL_insertInVar)
00183                 throw p;    
00184             }
00185     
00186         
00187         l_pszTmp = releaseCharBuffer(l_pszTmp);
00188         DEBUG_OUT(OTL_insertInVar)      
00189 
00190     }
00191 
00192 
00193 
00194     //_________________________________________________________________________
00195     //  OTL_GETCOLUMBINDTYPE
00196     //-------------------------------------------------------------------------
00197     char* OTL_getColumBindType(const char* p_pszFieldDBSpec, unsigned int p_uiSQLSyntax) 
00198     {
00199         //---------------------------------------------------------------------
00200         int         l_intOTLType;
00201         int         l_intDBSize;
00202         char*       l_pszDDL;
00203         char*       l_pszTmp;
00204         char*       l_pszOTLType;
00205         char*       l_pszDBType;
00206         char*       l_pszDBSize;
00207         char*       l_pszFieldDBSpec;
00208         char*       l_pszTmp2;
00209         //---------------------------------------------------------------------
00210         
00211         DEBUG_IN(OTL_getColumBindType)
00212 
00213 
00214         l_pszFieldDBSpec = copyCharBuffer( p_pszFieldDBSpec);
00215         l_pszTmp = l_pszFieldDBSpec;
00216 
00217         // Get OTL type
00218         l_pszTmp2 = strstr( l_pszTmp, DBOBJDEFFIELD_DBSPECSEP);
00219         if( l_pszTmp2 ) 
00220         {
00221             l_pszTmp2[0]='\0';
00222             l_pszOTLType = l_pszTmp;
00223             l_pszTmp = l_pszTmp2 + strlen(DDLSTREAMER_DBSPECSEP);
00224         }
00225         else THROW_XMLFLOW_EXCEPTION ( ERRCODE_LOC_OTHERS + ERRCODE_CAUSE_WRONGDATA , "OTL type is missing in DBSpec field " , l_pszFieldDBSpec, "DDLStreamer::makeNodeDDL", "", false);
00226 
00227         // Get DB type
00228         l_pszTmp2 = strstr( l_pszTmp, DBOBJDEFFIELD_DBSPECSEP);
00229         if( l_pszTmp2 ) 
00230         {
00231             l_pszTmp2[0]='\0';
00232             l_pszDBType = l_pszTmp;
00233             l_pszTmp = l_pszTmp2 + strlen(DBOBJDEFFIELD_DBSPECSEP);
00234         }       
00235         else THROW_XMLFLOW_EXCEPTION ( ERRCODE_LOC_OTHERS + ERRCODE_CAUSE_WRONGDATA , "DB type is missing in DBSpec field " , l_pszFieldDBSpec, "DDLStreamer::makeNodeDDL", "", false);
00236         
00237         // Get DB size
00238         l_pszTmp2 = strstr( l_pszTmp, DBOBJDEFFIELD_DBSPECSEP);
00239         if( l_pszTmp2 ) 
00240         {
00241             l_pszTmp2[0]='\0';
00242             l_intDBSize = atoi(l_pszTmp)+1;
00243             l_pszDBSize = copyCharBuffer("000000000");
00244             sprintf(l_pszDBSize,"%d",l_intDBSize);
00245             l_pszTmp = l_pszTmp2 + strlen(DBOBJDEFFIELD_DBSPECSEP);
00246         }
00247         else THROW_XMLFLOW_EXCEPTION ( ERRCODE_LOC_OTHERS + ERRCODE_CAUSE_WRONGDATA , "DB size is missing in DBSpec field ", l_pszFieldDBSpec, "DDLStreamer::makeNodeDDL", "", false);
00248             
00249         l_intOTLType=atoi(l_pszOTLType);
00250 
00251         switch( l_intOTLType)
00252         {
00253             case otl_var_char:        
00254                     // null terminated string (code=1) 
00255                     l_pszDDL = copyCharBuffer( "char[");
00256                     l_pszDDL = concatCharBuffer( l_pszDDL, l_pszDBSize );
00257                     l_pszDDL = concatCharBuffer( l_pszDDL, "]") ; 
00258             break;
00259             case otl_var_double:        
00260                     // 8-byte floating point number (code=2)                
00261                     l_pszDDL = copyCharBuffer( "double" );
00262             break; 
00263             case otl_var_float:      
00264                     // 4-byte floating point number (code=3) 
00265                      l_pszDDL = copyCharBuffer( "long" );
00266             break;  
00267             case otl_var_int:          
00268                     // 32-bit signed integer (code=4) 
00269                     l_pszDDL= copyCharBuffer( "int" );
00270             break;  
00271             case otl_var_unsigned_int:  
00272                     // 32-bit unsigned integer (code=5) 
00273                     l_pszDDL= copyCharBuffer( "unsigned" );
00274             break;  
00275             case otl_var_short:      
00276                     // 16-bit signed integer (code=6) 
00277                     l_pszDDL= copyCharBuffer( "short" );
00278             break;  
00279             case otl_var_long_int:    
00280                     // 32-signed integer (code=7) 
00281                     l_pszDDL= copyCharBuffer( "long" );
00282             break;  
00283             case otl_var_timestamp:  
00284                     // datatype that is mapped into TIMESTAMp_pszUCT, ODBC and DB2-CLI only (code=8)
00285                 //#if defined(SQL_SYNTAX_MSSQL)
00286                 //  l_pszDDL= copyCharBuffer( "timestamp" );
00287                 //#else
00288                     l_pszDDL= copyCharBuffer( "char[50]" );
00289                 //#endif
00290             break; 
00291             case otl_var_varchar_long:  
00292                     // datatype that is mapped into LONG in Oracle 7/8, TEXT in MS SQL Server and Sybase, CLOB in DB2 (code=9), 
00293                     l_pszDDL= copyCharBuffer( "varchar_long" );
00294             break;
00295             case otl_var_raw_long:    
00296                     // datatype that is mapped into LONG RAW in Oracle 7/8, IMAGE in MS SQL Server ad Sybase, BLOB in DB2 (code=10) 
00297                     l_pszDDL= copyCharBuffer( "raw_long" );
00298             break;
00299             case otl_var_clob:        
00300                     // datatype that is mapped into CLOB in Oracle 8 (code=11) 
00301                     l_pszDDL= copyCharBuffer( "clob" );
00302             break;
00303             case otl_var_blob:        
00304                     // datatype that is mapped into BLOB in Oracle 8 (code=12) 
00305                     l_pszDDL= copyCharBuffer( "blob" );
00306             break;
00307         }
00308 
00309         l_pszFieldDBSpec = releaseCharBuffer( l_pszFieldDBSpec);
00310         l_pszDBSize = releaseCharBuffer( l_pszDBSize);
00311 
00312 
00313         DEBUG_OUT(OTL_getColumBindType)
00314 
00315         return l_pszDDL;
00316     }
00317 
00318 
00319 
00320 
00321 
00322 
00323     //_________________________________________________________________________
00324     //  OTL_GETCOLUMNDDL
00325     //-------------------------------------------------------------------------
00326     char* OTL_getColumnDDL(const char* p_pszFieldDBSpec, unsigned int p_uiSQLSyntax) 
00327     {
00328         //---------------------------------------------------------------------
00329         int         l_intOTLType;
00330         char*       l_pszDDL;
00331         const char* l_pszOTLType;
00332         const char* l_pszDBType;
00333         const char* l_pszDBSize;
00334         const char* l_pszDBScale;
00335         const char* l_pszDBPrec;
00336         const char* l_pszDBNullOK;
00337         char*       l_pszTmp;
00338         char*       l_pszTmp2;
00339         char*       l_pszFieldDBSpec;
00340         //---------------------------------------------------------------------
00341         
00342         DEBUG_IN(OTL_getColumnDDL)
00343 
00344         l_pszFieldDBSpec = copyCharBuffer( p_pszFieldDBSpec);
00345         l_pszTmp = l_pszFieldDBSpec;
00346 
00347         // Get OTL type
00348         l_pszTmp2 = strstr( l_pszTmp, DDLSTREAMER_DBSPECSEP);
00349         if( l_pszTmp2 ) 
00350         {
00351             l_pszTmp2[0]='\0';
00352             l_pszOTLType = l_pszTmp;
00353             l_pszTmp = l_pszTmp2 + strlen(DDLSTREAMER_DBSPECSEP);
00354         }
00355         else THROW_XMLFLOW_EXCEPTION ( ERRCODE_LOC_DDLHANDLER + ERRCODE_CAUSE_WRONGDATA , "OTL type is missing in DBSpec field " , l_pszFieldDBSpec, "DDLStreamer::makeNodeDDL", "", false);
00356 
00357         // Get DB type
00358         l_pszTmp2 = strstr( l_pszTmp, DDLSTREAMER_DBSPECSEP);
00359         if( l_pszTmp2 ) 
00360         {
00361             l_pszTmp2[0]='\0';
00362             l_pszDBType = l_pszTmp;
00363             l_pszTmp = l_pszTmp2 + strlen(DDLSTREAMER_DBSPECSEP);
00364         }
00365         else THROW_XMLFLOW_EXCEPTION ( ERRCODE_LOC_DDLHANDLER + ERRCODE_CAUSE_WRONGDATA , "DB type is missing in DBSpec field " , l_pszFieldDBSpec, "DDLStreamer::makeNodeDDL", "", false);
00366 
00367 
00368         // Get DB size
00369         l_pszTmp2 = strstr( l_pszTmp, DDLSTREAMER_DBSPECSEP);
00370         if( l_pszTmp2 ) 
00371         {
00372             l_pszTmp2[0]='\0';
00373             l_pszDBSize = l_pszTmp;
00374             l_pszTmp = l_pszTmp2 + strlen(DDLSTREAMER_DBSPECSEP);
00375         }
00376         else THROW_XMLFLOW_EXCEPTION ( ERRCODE_LOC_DDLHANDLER + ERRCODE_CAUSE_WRONGDATA , "DB size is missing in DBSpec field ", l_pszFieldDBSpec, "DDLStreamer::makeNodeDDL", "", false);
00377         
00378         // Get DB scale
00379         l_pszTmp2 = strstr( l_pszTmp, DDLSTREAMER_DBSPECSEP);
00380         if( l_pszTmp2) 
00381         {
00382             l_pszTmp2[0]='\0';
00383             l_pszDBScale = l_pszTmp;
00384             l_pszTmp = l_pszTmp2 + strlen(DDLSTREAMER_DBSPECSEP);
00385         }
00386         else THROW_XMLFLOW_EXCEPTION ( ERRCODE_LOC_DDLHANDLER + ERRCODE_CAUSE_WRONGDATA ,  "DB scale is missing in DBSpec field " , l_pszFieldDBSpec, "DDLStreamer::makeNodeDDL", "", false);
00387 
00388         // Get DB prec
00389         l_pszTmp2 = strstr( l_pszTmp, DDLSTREAMER_DBSPECSEP);
00390         if( l_pszTmp2 ) 
00391         {
00392             l_pszTmp2[0]='\0';
00393             l_pszDBPrec = l_pszTmp;
00394             l_pszTmp = l_pszTmp2 + strlen(DDLSTREAMER_DBSPECSEP);
00395         }
00396         else THROW_XMLFLOW_EXCEPTION ( ERRCODE_LOC_DDLHANDLER + ERRCODE_CAUSE_WRONGDATA ,  "DB precision is missing in DBSpec field " , l_pszFieldDBSpec, "DDLStreamer::makeNodeDDL", "", false);
00397 
00398         // Get Null OK
00399         if(strlen(l_pszTmp) > 0) 
00400         {
00401             l_pszDBNullOK = l_pszTmp;
00402         }   
00403         else THROW_XMLFLOW_EXCEPTION ( ERRCODE_LOC_DDLHANDLER + ERRCODE_CAUSE_WRONGDATA ,  "NULL OK is missing in DBSpec field ", l_pszFieldDBSpec, "DDLStreamer::makeNodeDDL", "", false);   
00404         
00405         
00406         l_intOTLType=atoi(l_pszOTLType);
00407 
00408         switch( l_intOTLType)
00409         {
00410             case otl_var_char:        
00411                     // null terminated string (code=1) 
00412                     l_pszDDL = copyCharBuffer( "VARCHAR(");
00413                     l_pszDDL = concatCharBuffer( l_pszDDL, l_pszDBSize );
00414                     l_pszDDL = concatCharBuffer( l_pszDDL, ")") ; 
00415             break;
00416             case otl_var_double:        
00417                     // 8-byte floating point number (code=2)                
00418                     if(l_pszDBPrec !="0")
00419                     {
00420                         l_pszDDL = copyCharBuffer( "FLOAT" );
00421                         l_pszDDL = concatCharBuffer( l_pszDDL, "(");
00422                         l_pszDDL = concatCharBuffer( l_pszDDL,  l_pszDBPrec );
00423                         l_pszDDL = concatCharBuffer( l_pszDDL,  ")" );
00424                     }
00425                     else l_pszDDL = copyCharBuffer( "INTEGER" );
00426             break; 
00427             case otl_var_float:      
00428                     // 4-byte floating point number (code=3) 
00429                     if(l_pszDBPrec !="0")
00430                     {
00431                         l_pszDDL = copyCharBuffer( "FLOAT" );
00432                         l_pszDDL = concatCharBuffer( l_pszDDL, "(");
00433                         l_pszDDL = concatCharBuffer( l_pszDDL, l_pszDBPrec );
00434                         l_pszDDL = concatCharBuffer( l_pszDDL, ")" );
00435                     }
00436                     else l_pszDDL = copyCharBuffer( "INTEGER" );
00437             break;  
00438             case otl_var_int:          
00439                     // 32-bit signed integer (code=4) 
00440                     l_pszDDL= copyCharBuffer( "INTEGER" );
00441             break;  
00442             case otl_var_unsigned_int:  
00443                     // 32-bit unsigned integer (code=5) 
00444                     l_pszDDL= copyCharBuffer( "INTEGER" );
00445             break;  
00446             case otl_var_short:      
00447                     // 16-bit signed integer (code=6) 
00448                     l_pszDDL= copyCharBuffer( "SMALLINT" );
00449             break;  
00450             case otl_var_long_int:    
00451                     // 32-signed integer (code=7) 
00452                     l_pszDDL= copyCharBuffer( "INTEGER" );
00453             break;  
00454             case otl_var_timestamp:  
00455                     // datatype that is mapped into TIMESTAMp_pszUCT, ODBC and DB2-CLI only (code=8)
00456                     if (p_uiSQLSyntax==SQL_SYNTAX_ORA)
00457                     {
00458                         l_pszDDL= copyCharBuffer( "DATE" );
00459                     }
00460                     else if (p_uiSQLSyntax==SQL_SYNTAX_MSSQL)
00461                     {
00462                         l_pszDDL= copyCharBuffer( "TIMESTAMP" );
00463                     }
00464                     else if (p_uiSQLSyntax==SQL_SYNTAX_DB2)
00465                     {
00466                         l_pszDDL= copyCharBuffer( "TIMESTAMP" );
00467                     }               
00468             break; 
00469             case otl_var_varchar_long:  
00470                     // datatype that is mapped into LONG in Oracle 7/8, TEXT in MS SQL Server and Sybase, CLOB in DB2 (code=9), 
00471                     if (p_uiSQLSyntax==SQL_SYNTAX_ORA)
00472                     {
00473                         l_pszDDL= copyCharBuffer( "LONG" );
00474                     }
00475                     else if (p_uiSQLSyntax==SQL_SYNTAX_MSSQL)
00476                     {
00477                         l_pszDDL= copyCharBuffer( "TEXT" );
00478                     }
00479                     else if (p_uiSQLSyntax==SQL_SYNTAX_DB2)
00480                     {
00481                         l_pszDDL= copyCharBuffer( "CLOB" );
00482                     }                   
00483             break;
00484             case otl_var_raw_long:    
00485                     // datatype that is mapped into LONG RAW in Oracle 7/8, IMAGE in MS SQL Server ad Sybase, BLOB in DB2 (code=10) 
00486                     if (p_uiSQLSyntax==SQL_SYNTAX_ORA)
00487                     {
00488                         l_pszDDL= copyCharBuffer( "LONG RAW" );
00489                     }
00490                     else if (p_uiSQLSyntax==SQL_SYNTAX_MSSQL)
00491                     {
00492                         l_pszDDL= copyCharBuffer( "IMAGE" );
00493                     }
00494                     else if (p_uiSQLSyntax==SQL_SYNTAX_DB2)
00495                     {
00496                         l_pszDDL= copyCharBuffer( "BLOB" );
00497                     }
00498             break;
00499             case otl_var_clob:        
00500                     // datatype that is mapped into CLOB in Oracle 8 (code=11) 
00501                     l_pszDDL= copyCharBuffer( "CLOB" );
00502             break;
00503             case otl_var_blob:        
00504                     // datatype that is mapped into BLOB in Oracle 8 (code=12) 
00505                     l_pszDDL= copyCharBuffer( "BLOB" );
00506             break;
00507         }
00508 
00509         DEBUG_OUT(OTL_getColumnDDL)
00510 
00511         return l_pszDDL;
00512     }
00513 
00514 END_XDFLENGINE_NS
00515 
00516 

Generated on Sat Oct 4 13:20:00 2003 for XDFLengine by doxygen1.3-rc2