<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1"> <title>FreeTDS API: /usr/local/users/home/jklowden/projects/releases/freetds/0.82/include/dblib.h Source File</title> <link href="doxygen.css" rel="stylesheet" type="text/css"> </head><body> <!-- Generated by Doxygen 1.4.1 --> <div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="dirs.html">Directories</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="functions.html">Class Members</a> | <a class="qindex" href="globals.html">File Members</a> | <a class="qindex" href="pages.html">Related Pages</a></div> <div class="nav"> <a class="el" href="dir_000000.html">include</a></div> <h1>dblib.h</h1><div class="fragment"><pre class="fragment">00001 <span class="comment">/* FreeTDS - Library of routines accessing Sybase and Microsoft databases</span> 00002 <span class="comment"> * Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005 Brian Bruns</span> 00003 <span class="comment"> *</span> 00004 <span class="comment"> * This library is free software; you can redistribute it and/or</span> 00005 <span class="comment"> * modify it under the terms of the GNU Library General Public</span> 00006 <span class="comment"> * License as published by the Free Software Foundation; either</span> 00007 <span class="comment"> * version 2 of the License, or (at your option) any later version.</span> 00008 <span class="comment"> *</span> 00009 <span class="comment"> * This library is distributed in the hope that it will be useful,</span> 00010 <span class="comment"> * but WITHOUT ANY WARRANTY; without even the implied warranty of</span> 00011 <span class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU</span> 00012 <span class="comment"> * Library General Public License for more details.</span> 00013 <span class="comment"> *</span> 00014 <span class="comment"> * You should have received a copy of the GNU Library General Public</span> 00015 <span class="comment"> * License along with this library; if not, write to the</span> 00016 <span class="comment"> * Free Software Foundation, Inc., 59 Temple Place - Suite 330,</span> 00017 <span class="comment"> * Boston, MA 02111-1307, USA.</span> 00018 <span class="comment"> */</span> 00019 00020 <span class="preprocessor">#ifndef _dblib_h_</span> 00021 <span class="preprocessor"></span><span class="preprocessor">#define _dblib_h_</span> 00022 <span class="preprocessor"></span> 00023 <span class="preprocessor">#if defined(__GNUC__) && __GNUC__ >= 4</span> 00024 <span class="preprocessor"></span><span class="preprocessor">#pragma GCC visibility push(hidden)</span> 00025 <span class="preprocessor"></span><span class="preprocessor">#endif</span> 00026 <span class="preprocessor"></span> 00027 <span class="preprocessor">#ifdef __cplusplus</span> 00028 <span class="preprocessor"></span><span class="keyword">extern</span> <span class="stringliteral">"C"</span> 00029 { 00030 <span class="preprocessor">#if 0</span> 00031 <span class="preprocessor"></span>} 00032 <span class="preprocessor">#endif</span> 00033 <span class="preprocessor"></span><span class="preprocessor">#endif</span> 00034 <span class="preprocessor"></span> 00035 <span class="comment">/* $Id: dblib.h,v 1.43 2007/12/05 03:04:11 jklowden Exp $ */</span> 00036 00037 <span class="keyword">enum</span> { 00038 _DB_RES_INIT = 0 00039 , _DB_RES_RESULTSET_EMPTY = 1 00040 , _DB_RES_RESULTSET_ROWS = 2 00041 , _DB_RES_NEXT_RESULT = 3 00042 , _DB_RES_NO_MORE_RESULTS = 4 00043 , _DB_RES_SUCCEED = 5 00044 }; 00045 00046 <span class="keyword">struct </span>tds_dblib_loginrec 00047 { 00048 TDSLOGIN *tds_login; 00049 }; 00050 00051 <span class="keyword">struct </span>dblib_buffer_row; 00052 00053 <span class="keyword">typedef</span> <span class="keyword">struct </span>tag_DBPROC_ROWBUF 00054 { 00055 <span class="keywordtype">int</span> received; <span class="comment">/* how many rows have been received for this result set */</span> 00056 <span class="keywordtype">int</span> head; <span class="comment">/* queue insertion point */</span> 00057 <span class="keywordtype">int</span> tail; <span class="comment">/* oldest item in queue */</span> 00058 <span class="keywordtype">int</span> current; <span class="comment">/* dbnextrow() reads this row */</span> 00059 <span class="keywordtype">int</span> capacity; <span class="comment">/* how many elements the queue can hold */</span> 00060 <span class="keyword">struct </span>dblib_buffer_row *rows; <span class="comment">/* pointer to the row storage */</span> 00061 } DBPROC_ROWBUF; 00062 00063 <span class="keyword">typedef</span> <span class="keyword">struct</span> 00064 <span class="keyword"></span>{ 00065 <span class="keywordtype">int</span> host_column; 00066 <span class="keywordtype">int</span> datatype; 00067 <span class="keywordtype">int</span> prefix_len; 00068 DBINT column_len; 00069 BYTE *terminator; 00070 <span class="keywordtype">int</span> term_len; 00071 <span class="keywordtype">int</span> tab_colnum; 00072 <span class="keywordtype">int</span> column_error; 00073 BCPCOLDATA *bcp_column_data; 00074 } BCP_HOSTCOLINFO; 00075 00076 <span class="keyword">typedef</span> <span class="keyword">struct </span> 00077 <span class="keyword"></span>{ 00078 TDS_CHAR *hostfile; 00079 TDS_CHAR *errorfile; 00080 FILE *bcp_errfileptr; 00081 TDS_INT host_colcount; 00082 BCP_HOSTCOLINFO **host_columns; 00083 TDS_INT firstrow; 00084 TDS_INT lastrow; 00085 TDS_INT maxerrs; 00086 TDS_INT batch; 00087 } BCP_HOSTFILEINFO; 00088 00089 <span class="keyword">typedef</span> <span class="keyword">struct</span> 00090 <span class="keyword"></span>{ 00091 <span class="keyword">const</span> <span class="keywordtype">char</span> *hint; 00092 TDS_CHAR *tablename; 00093 TDS_CHAR *insert_stmt; 00094 TDS_INT direction; 00095 TDS_INT queryout; 00096 TDS_INT identity_insert_on; 00097 TDS_INT xfer_init; 00098 TDS_INT var_cols; 00099 TDS_INT bind_count; 00100 <a class="code" href="a00143.html">TDSRESULTINFO</a> *bindinfo; 00101 } DB_BCPINFO; 00102 <span class="comment">/* linked list of rpc parameters */</span> 00103 00104 <span class="keyword">typedef</span> <span class="keyword">struct </span>_DBREMOTE_PROC_PARAM 00105 { 00106 <span class="keyword">struct </span>_DBREMOTE_PROC_PARAM *next; 00107 00108 <span class="keywordtype">char</span> *name; 00109 BYTE status; 00110 <span class="keywordtype">int</span> type; 00111 DBINT maxlen; 00112 DBINT datalen; 00113 BYTE *value; 00114 } DBREMOTE_PROC_PARAM; 00115 00116 <span class="keyword">typedef</span> <span class="keyword">struct </span>_DBREMOTE_PROC 00117 { 00118 <span class="keyword">struct </span>_DBREMOTE_PROC *next; 00119 00120 <span class="keywordtype">char</span> *name; 00121 DBSMALLINT options; 00122 DBREMOTE_PROC_PARAM *param_list; 00123 } DBREMOTE_PROC; 00124 00125 <span class="preprocessor">#define MAXOPTTEXT 32</span> 00126 <span class="preprocessor"></span> 00127 <span class="keyword">struct </span>dboption 00128 { 00129 <span class="keywordtype">char</span> text[MAXOPTTEXT]; 00130 DBSTRING *param; 00131 DBBOOL factive; 00132 }; 00133 <span class="keyword">typedef</span> <span class="keyword">struct </span>dboption DBOPTION; 00134 00135 <span class="keyword">typedef</span> <span class="keyword">struct </span>_null_representation 00136 { 00137 <span class="keyword">const</span> BYTE *bindval; 00138 size_t len; 00139 } NULLREP; 00140 00141 <span class="keyword">struct </span>tds_dblib_dbprocess 00142 { 00143 <a class="code" href="a00144.html">TDSSOCKET</a> *<a class="code" href="a00144.html">tds_socket</a>; 00144 00145 TDS_INT row_type; 00146 DBPROC_ROWBUF row_buf; 00147 00148 <span class="keywordtype">int</span> noautofree; 00149 <span class="keywordtype">int</span> more_results; <span class="comment">/* boolean. Are we expecting results? */</span> 00150 <span class="keywordtype">int</span> dbresults_state; 00151 <span class="keywordtype">int</span> dbresults_retcode; 00152 BYTE *user_data; <span class="comment">/* see dbsetuserdata() and dbgetuserdata() */</span> 00153 <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> *dbbuf; <span class="comment">/* is dynamic! */</span> 00154 <span class="keywordtype">int</span> dbbufsz; 00155 <span class="keywordtype">int</span> command_state; 00156 TDS_INT text_size; 00157 TDS_INT text_sent; 00158 DBTYPEINFO typeinfo; 00159 <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> avail_flag; 00160 DBOPTION *dbopts; 00161 DBSTRING *dboptcmd; 00162 BCP_HOSTFILEINFO *hostfileinfo; 00163 DB_BCPINFO *bcpinfo; 00164 DBREMOTE_PROC *rpc; 00165 DBUSMALLINT envchange_rcv; 00166 <span class="keywordtype">char</span> dbcurdb[DBMAXNAME + 1]; 00167 <span class="keywordtype">char</span> servcharset[DBMAXNAME + 1]; 00168 FILE *ftos; 00169 DB_DBCHKINTR_FUNC chkintr; 00170 DB_DBHNDLINTR_FUNC hndlintr; 00171 00173 <span class="keywordtype">int</span> msdblib; 00174 00175 <span class="keywordtype">int</span> ntimeouts; 00176 00178 NULLREP nullreps[MAXBINDTYPES]; 00179 }; 00180 00181 <span class="comment">/*</span> 00182 <span class="comment"> * internal prototypes</span> 00183 <span class="comment"> */</span> 00184 <span class="keywordtype">int</span> <a class="code" href="a00281.html#ga20">dbperror</a> (DBPROCESS *dbproc, DBINT msgno, <span class="keywordtype">long</span> errnum, ...); 00185 <span class="keywordtype">int</span> _dblib_handle_info_message(<span class="keyword">const</span> TDSCONTEXT * ctxptr, <a class="code" href="a00144.html">TDSSOCKET</a> * tdsptr, TDSMESSAGE* msgptr); 00186 <span class="keywordtype">int</span> _dblib_handle_err_message(<span class="keyword">const</span> TDSCONTEXT * ctxptr, <a class="code" href="a00144.html">TDSSOCKET</a> * tdsptr, TDSMESSAGE* msgptr); 00187 <span class="keywordtype">int</span> <a class="code" href="a00281.html#ga21">_dblib_check_and_handle_interrupt</a>(<span class="keywordtype">void</span> * vdbproc); 00188 00189 <span class="keywordtype">void</span> _dblib_setTDS_version(TDSLOGIN * tds_login, DBINT version); 00190 00191 DBINT _convert_char(<span class="keywordtype">int</span> srctype, BYTE * src, <span class="keywordtype">int</span> destype, BYTE * dest, DBINT destlen); 00192 DBINT _convert_intn(<span class="keywordtype">int</span> srctype, BYTE * src, <span class="keywordtype">int</span> destype, BYTE * dest, DBINT destlen); 00193 00194 RETCODE _bcp_clear_storage(DBPROCESS * dbproc); 00195 RETCODE _bcp_get_prog_data(DBPROCESS * dbproc); 00196 00197 <span class="keyword">extern</span> MHANDLEFUNC _dblib_msg_handler; 00198 <span class="keyword">extern</span> EHANDLEFUNC _dblib_err_handler; 00199 00200 <span class="preprocessor">#define CHECK_PARAMETER(x, msg, ret) if (!(x)) { dbperror(dbproc, (msg), 0); return ret; }</span> 00201 <span class="preprocessor"></span><span class="preprocessor">#define CHECK_DBPROC() CHECK_PARAMETER(dbproc, SYBENULL, FAIL)</span> 00202 <span class="preprocessor"></span><span class="preprocessor">#define CHECK_NULP(x, func, param_num, ret) if (!(x)) { dbperror(dbproc, SYBENULP, 0, func, (int) param_num); return ret; }</span> 00203 <span class="preprocessor"></span><span class="preprocessor">#define CHECK_PARAMETER_NOPROC(x, msg) if (!(x)) { dbperror(NULL, (msg), 0); return FAIL; }</span> 00204 <span class="preprocessor"></span><span class="preprocessor">#define DBPERROR_RETURN(x, msg) if (x) { dbperror(dbproc, (msg), 0); return FAIL; }</span> 00205 <span class="preprocessor"></span><span class="preprocessor">#define DBPERROR_RETURN3(x, msg, a, b, c) if (x) { dbperror(dbproc, (msg), 0, a, b, c); return FAIL; }</span> 00206 <span class="preprocessor"></span> 00207 00208 <span class="preprocessor">#ifdef __cplusplus</span> 00209 <span class="preprocessor"></span><span class="preprocessor">#if 0</span> 00210 <span class="preprocessor"></span>{ 00211 <span class="preprocessor">#endif</span> 00212 <span class="preprocessor"></span>} 00213 <span class="preprocessor">#endif</span> 00214 <span class="preprocessor"></span> 00215 <span class="preprocessor">#if defined(__GNUC__) && __GNUC__ >= 4</span> 00216 <span class="preprocessor"></span><span class="preprocessor">#pragma GCC visibility pop</span> 00217 <span class="preprocessor"></span><span class="preprocessor">#endif</span> 00218 <span class="preprocessor"></span> 00219 <span class="preprocessor">#endif</span> </pre></div><hr size="1"><address style="align: right;"><small>Generated on Wed May 7 19:22:09 2008 for FreeTDS API by <a href="http://www.doxygen.org/index.html"> <img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.1 </small></address> </body> </html>