<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> <meta http-equiv="X-UA-Compatible" content="IE=9"/> <meta name="generator" content="Doxygen 1.8.12"/> <meta name="viewport" content="width=device-width, initial-scale=1"/> <title>FreeTDS API: ODBC utility</title> <link href="tabs.css" rel="stylesheet" type="text/css"/> <script type="text/javascript" src="jquery.js"></script> <script type="text/javascript" src="dynsections.js"></script> <link href="search/search.css" rel="stylesheet" type="text/css"/> <script type="text/javascript" src="search/searchdata.js"></script> <script type="text/javascript" src="search/search.js"></script> <link href="doxygen.css" rel="stylesheet" type="text/css" /> </head> <body> <div id="top"><!-- do not remove this div, it is closed by doxygen! --> <div id="titlearea"> <table cellspacing="0" cellpadding="0"> <tbody> <tr style="height: 56px;"> <td id="projectalign" style="padding-left: 0.5em;"> <div id="projectname">FreeTDS API </div> </td> </tr> </tbody> </table> </div> <!-- end header part --> <!-- Generated by Doxygen 1.8.12 --> <script type="text/javascript"> var searchBox = new SearchBox("searchBox", "search",false,'Search'); </script> <script type="text/javascript" src="menudata.js"></script> <script type="text/javascript" src="menu.js"></script> <script type="text/javascript"> $(function() { initMenu('',true,false,'search.php','Search'); $(document).ready(function() { init_search(); }); }); </script> <div id="main-nav"></div> </div><!-- top --> <!-- window showing the filter options --> <div id="MSearchSelectWindow" onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" onkeydown="return searchBox.OnSearchSelectKey(event)"> </div> <!-- iframe showing the search results (closed by default) --> <div id="MSearchResultsWindow"> <iframe src="javascript:void(0)" frameborder="0" name="MSearchResults" id="MSearchResults"> </iframe> </div> <div class="header"> <div class="summary"> <a href="#define-members">Macros</a> | <a href="#func-members">Functions</a> </div> <div class="headertitle"> <div class="title">ODBC utility<div class="ingroups"><a class="el" href="a00526.html">ODBC API</a></div></div> </div> </div><!--header--> <div class="contents"> <p>Functions called within <code>ODBC</code> driver. <a href="#details">More...</a></p> <div class="dynheader"> Collaboration diagram for ODBC utility:</div> <div class="dyncontent"> <center><table><tr><td><div class="center"><iframe scrolling="no" frameborder="0" src="a00527.svg" width="244" height="38"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe> </div> </td></tr></table></center> </div> <table class="memberdecls"> <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="define-members"></a> Macros</h2></td></tr> <tr class="memitem:ga9ebc5d499cace793f1e05df6c7c9ba44"><td class="memItemLeft" align="right" valign="top"><a id="ga9ebc5d499cace793f1e05df6c7c9ba44"></a> #define </td><td class="memItemRight" valign="bottom"><b>C_TYPES</b></td></tr> <tr class="separator:ga9ebc5d499cace793f1e05df6c7c9ba44"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:ga7293d54269b60ba94d1d4a6e7b262492"><td class="memItemLeft" align="right" valign="top"><a id="ga7293d54269b60ba94d1d4a6e7b262492"></a> #define </td><td class="memItemRight" valign="bottom"><b>SQL_TYPES</b></td></tr> <tr class="separator:ga7293d54269b60ba94d1d4a6e7b262492"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:gae4ebaead62811e56dd56c48af869c714"><td class="memItemLeft" align="right" valign="top"><a id="gae4ebaead62811e56dd56c48af869c714"></a> #define </td><td class="memItemRight" valign="bottom"><b>TYPE_NORMAL_SQL_C_GUID</b></td></tr> <tr class="separator:gae4ebaead62811e56dd56c48af869c714"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:ga9d49c06d0280d4fdc00e3617b5dffffd"><td class="memItemLeft" align="right" valign="top"><a id="ga9d49c06d0280d4fdc00e3617b5dffffd"></a> #define </td><td class="memItemRight" valign="bottom"><b>TYPE_NORMAL_SQL_GUID</b></td></tr> <tr class="separator:ga9d49c06d0280d4fdc00e3617b5dffffd"><td class="memSeparator" colspan="2"> </td></tr> </table><table class="memberdecls"> <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a> Functions</h2></td></tr> <tr class="memitem:ga3f0a413cea480a38d3d9b90c95515f6b"><td class="memItemLeft" align="right" valign="top">TDS_SERVER_TYPE </td><td class="memItemRight" valign="bottom"><a class="el" href="a00527.html#ga3f0a413cea480a38d3d9b90c95515f6b">odbc_c_to_server_type</a> (int c_type)</td></tr> <tr class="memdesc:ga3f0a413cea480a38d3d9b90c95515f6b"><td class="mdescLeft"> </td><td class="mdescRight">Pass this an SQL_C_* type and get a SYB* type which most closely corresponds to the SQL_C_* type. <a href="#ga3f0a413cea480a38d3d9b90c95515f6b">More...</a><br /></td></tr> <tr class="separator:ga3f0a413cea480a38d3d9b90c95515f6b"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:gaa11c942c0504adeede625f31c495ef77"><td class="memItemLeft" align="right" valign="top"><a id="gaa11c942c0504adeede625f31c495ef77"></a> void </td><td class="memItemRight" valign="bottom"><b>odbc_convert_err_set</b> (struct <a class="el" href="a00953.html">_sql_errors</a> *errs, TDS_INT err)</td></tr> <tr class="separator:gaa11c942c0504adeede625f31c495ef77"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:ga3e2de34471fa78e584e4097dc3e31ad9"><td class="memItemLeft" align="right" valign="top"><a id="ga3e2de34471fa78e584e4097dc3e31ad9"></a> <a class="el" href="a00434.html#afddddf5bd7ad223cadee3d3bdc899954">DSTR</a> * </td><td class="memItemRight" valign="bottom"><b>odbc_dstr_copy</b> (<a class="el" href="a00985.html">TDS_DBC</a> *dbc, <a class="el" href="a00434.html#afddddf5bd7ad223cadee3d3bdc899954">DSTR</a> *s, int size, const ODBC_CHAR *str)</td></tr> <tr class="separator:ga3e2de34471fa78e584e4097dc3e31ad9"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:gafd5cb20e55dcb29b31e62fa6857061e8"><td class="memItemLeft" align="right" valign="top"><a id="gafd5cb20e55dcb29b31e62fa6857061e8"></a> SQLSMALLINT </td><td class="memItemRight" valign="bottom"><b>odbc_get_concise_c_type</b> (SQLSMALLINT type, SQLSMALLINT interval)</td></tr> <tr class="separator:gafd5cb20e55dcb29b31e62fa6857061e8"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:ga61bc1eed77426257cba30539c0bbd192"><td class="memItemLeft" align="right" valign="top"><a id="ga61bc1eed77426257cba30539c0bbd192"></a> SQLSMALLINT </td><td class="memItemRight" valign="bottom"><b>odbc_get_concise_sql_type</b> (SQLSMALLINT type, SQLSMALLINT interval)</td></tr> <tr class="separator:ga61bc1eed77426257cba30539c0bbd192"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:gab8d14abc5db4efed19212789f1709ecb"><td class="memItemLeft" align="right" valign="top"><a id="gab8d14abc5db4efed19212789f1709ecb"></a> SQLLEN </td><td class="memItemRight" valign="bottom"><b>odbc_get_octet_len</b> (int c_type, const struct <a class="el" href="a00961.html">_drecord</a> *drec)</td></tr> <tr class="separator:gab8d14abc5db4efed19212789f1709ecb"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:ga35028e8de1d50dc51ccef1d645c55e2a"><td class="memItemLeft" align="right" valign="top"><a id="ga35028e8de1d50dc51ccef1d645c55e2a"></a> SQLINTEGER </td><td class="memItemRight" valign="bottom"><a class="el" href="a00527.html#ga35028e8de1d50dc51ccef1d645c55e2a">odbc_get_param_len</a> (const struct <a class="el" href="a00961.html">_drecord</a> *drec_axd, const struct <a class="el" href="a00961.html">_drecord</a> *drec_ixd, const <a class="el" href="a00965.html">TDS_DESC</a> *axd, unsigned int n_row)</td></tr> <tr class="memdesc:ga35028e8de1d50dc51ccef1d645c55e2a"><td class="mdescLeft"> </td><td class="mdescRight">Return length of parameter from parameter information. <br /></td></tr> <tr class="separator:ga35028e8de1d50dc51ccef1d645c55e2a"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:gafeb46e84157c5a8114160553d3424145"><td class="memItemLeft" align="right" valign="top"><a id="gafeb46e84157c5a8114160553d3424145"></a> unsigned int </td><td class="memItemRight" valign="bottom"><b>odbc_get_string_size</b> (int size, const ODBC_CHAR *str _WIDE)</td></tr> <tr class="separator:gafeb46e84157c5a8114160553d3424145"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:gae85ff7fb2002b5a7abc04fbee79e5525"><td class="memItemLeft" align="right" valign="top"><a id="gae85ff7fb2002b5a7abc04fbee79e5525"></a> void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00527.html#gae85ff7fb2002b5a7abc04fbee79e5525">odbc_rdbms_version</a> (<a class="el" href="a01193.html">TDSSOCKET</a> *tds, char *pversion_string)</td></tr> <tr class="memdesc:gae85ff7fb2002b5a7abc04fbee79e5525"><td class="mdescLeft"> </td><td class="mdescRight">Returns the version of the RDBMS in the ODBC format. <br /></td></tr> <tr class="separator:gae85ff7fb2002b5a7abc04fbee79e5525"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:ga128f6b09cde0af252370ba89cfa1fb78"><td class="memItemLeft" align="right" valign="top">SQLRETURN </td><td class="memItemRight" valign="bottom"><a class="el" href="a00527.html#ga128f6b09cde0af252370ba89cfa1fb78">odbc_set_concise_c_type</a> (SQLSMALLINT concise_type, struct <a class="el" href="a00961.html">_drecord</a> *drec, int check_only)</td></tr> <tr class="memdesc:ga128f6b09cde0af252370ba89cfa1fb78"><td class="mdescLeft"> </td><td class="mdescRight">Set concise type and all cascading field. <a href="#ga128f6b09cde0af252370ba89cfa1fb78">More...</a><br /></td></tr> <tr class="separator:ga128f6b09cde0af252370ba89cfa1fb78"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:ga125574bd2de677438909612db80041ea"><td class="memItemLeft" align="right" valign="top">SQLRETURN </td><td class="memItemRight" valign="bottom"><a class="el" href="a00527.html#ga125574bd2de677438909612db80041ea">odbc_set_concise_sql_type</a> (SQLSMALLINT concise_type, struct <a class="el" href="a00961.html">_drecord</a> *drec, int check_only)</td></tr> <tr class="memdesc:ga125574bd2de677438909612db80041ea"><td class="mdescLeft"> </td><td class="mdescRight">Set concise type and all cascading field. <a href="#ga125574bd2de677438909612db80041ea">More...</a><br /></td></tr> <tr class="separator:ga125574bd2de677438909612db80041ea"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:ga4d7f3ccb3041f6d9d64e025052cc1e3b"><td class="memItemLeft" align="right" valign="top"><a id="ga4d7f3ccb3041f6d9d64e025052cc1e3b"></a> void </td><td class="memItemRight" valign="bottom"><b>odbc_set_return_params</b> (struct <a class="el" href="a00993.html">_hstmt</a> *stmt, unsigned int n_row)</td></tr> <tr class="separator:ga4d7f3ccb3041f6d9d64e025052cc1e3b"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:ga9c0dddb7b680a1c71c12ae953089daa4"><td class="memItemLeft" align="right" valign="top"><a id="ga9c0dddb7b680a1c71c12ae953089daa4"></a> void </td><td class="memItemRight" valign="bottom"><b>odbc_set_return_status</b> (struct <a class="el" href="a00993.html">_hstmt</a> *stmt, unsigned int n_row)</td></tr> <tr class="separator:ga9c0dddb7b680a1c71c12ae953089daa4"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:ga01f6f50b50046d34e86f2f513f994398"><td class="memItemLeft" align="right" valign="top"><a id="ga01f6f50b50046d34e86f2f513f994398"></a> int </td><td class="memItemRight" valign="bottom"><b>odbc_set_stmt_query</b> (<a class="el" href="a00993.html">TDS_STMT</a> *stmt, const ODBC_CHAR *sql, int sql_len _WIDE)</td></tr> <tr class="separator:ga01f6f50b50046d34e86f2f513f994398"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:gadba4490bf3183799a70c9e2f44fab331"><td class="memItemLeft" align="right" valign="top">SQLRETURN </td><td class="memItemRight" valign="bottom"><a class="el" href="a00527.html#gadba4490bf3183799a70c9e2f44fab331">odbc_set_string_flag</a> (<a class="el" href="a00985.html">TDS_DBC</a> *dbc, SQLPOINTER buffer, SQLINTEGER cbBuffer, void FAR *pcbBuffer, const char *s, int len, int flag)</td></tr> <tr class="memdesc:gadba4490bf3183799a70c9e2f44fab331"><td class="mdescLeft"> </td><td class="mdescRight">Copy a string to client setting size according to ODBC convenction. <a href="#gadba4490bf3183799a70c9e2f44fab331">More...</a><br /></td></tr> <tr class="separator:gadba4490bf3183799a70c9e2f44fab331"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:ga5e4c9acb731dbc830094782d4084d08d"><td class="memItemLeft" align="right" valign="top"><a id="ga5e4c9acb731dbc830094782d4084d08d"></a> int </td><td class="memItemRight" valign="bottom"><b>odbc_sql_to_c_type_default</b> (int sql_type)</td></tr> <tr class="separator:ga5e4c9acb731dbc830094782d4084d08d"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:gaa9df9c748bade8b28c2c73db52d90081"><td class="memItemLeft" align="right" valign="top"><a id="gaa9df9c748bade8b28c2c73db52d90081"></a> TDS_SERVER_TYPE </td><td class="memItemRight" valign="bottom"><b>odbc_sql_to_server_type</b> (<a class="el" href="a01189.html">TDSCONNECTION</a> *conn, int sql_type, int sql_unsigned)</td></tr> <tr class="separator:gaa9df9c748bade8b28c2c73db52d90081"><td class="memSeparator" colspan="2"> </td></tr> </table> <a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2> <p>Functions called within <code>ODBC</code> driver. </p> <h2 class="groupheader">Function Documentation</h2> <a id="ga3f0a413cea480a38d3d9b90c95515f6b"></a> <h2 class="memtitle"><span class="permalink"><a href="#ga3f0a413cea480a38d3d9b90c95515f6b">§ </a></span>odbc_c_to_server_type()</h2> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">TDS_SERVER_TYPE odbc_c_to_server_type </td> <td>(</td> <td class="paramtype">int </td> <td class="paramname"><em>c_type</em></td><td>)</td> <td></td> </tr> </table> </div><div class="memdoc"> <p>Pass this an SQL_C_* type and get a SYB* type which most closely corresponds to the SQL_C_* type. </p> <p>This function can return XSYBNVARCHAR or SYBUINTx even if server do not support it </p> </div> </div> <a id="ga128f6b09cde0af252370ba89cfa1fb78"></a> <h2 class="memtitle"><span class="permalink"><a href="#ga128f6b09cde0af252370ba89cfa1fb78">§ </a></span>odbc_set_concise_c_type()</h2> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">SQLRETURN odbc_set_concise_c_type </td> <td>(</td> <td class="paramtype">SQLSMALLINT </td> <td class="paramname"><em>concise_type</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">struct <a class="el" href="a00961.html">_drecord</a> * </td> <td class="paramname"><em>drec</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">int </td> <td class="paramname"><em>check_only</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div><div class="memdoc"> <p>Set concise type and all cascading field. </p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">concise_type</td><td>concise type to set </td></tr> <tr><td class="paramname">drec</td><td>record to set. NULL to test error without setting </td></tr> <tr><td class="paramname">check_only</td><td>it <>0 (true) check only, do not set type </td></tr> </table> </dd> </dl> </div> </div> <a id="ga125574bd2de677438909612db80041ea"></a> <h2 class="memtitle"><span class="permalink"><a href="#ga125574bd2de677438909612db80041ea">§ </a></span>odbc_set_concise_sql_type()</h2> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">SQLRETURN odbc_set_concise_sql_type </td> <td>(</td> <td class="paramtype">SQLSMALLINT </td> <td class="paramname"><em>concise_type</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">struct <a class="el" href="a00961.html">_drecord</a> * </td> <td class="paramname"><em>drec</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">int </td> <td class="paramname"><em>check_only</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div><div class="memdoc"> <p>Set concise type and all cascading field. </p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">concise_type</td><td>concise type to set </td></tr> <tr><td class="paramname">drec</td><td>record to set. NULL to test error without setting </td></tr> <tr><td class="paramname">check_only</td><td>it <>0 (true) check only, do not set type </td></tr> </table> </dd> </dl> </div> </div> <a id="gadba4490bf3183799a70c9e2f44fab331"></a> <h2 class="memtitle"><span class="permalink"><a href="#gadba4490bf3183799a70c9e2f44fab331">§ </a></span>odbc_set_string_flag()</h2> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">SQLRETURN odbc_set_string_flag </td> <td>(</td> <td class="paramtype"><a class="el" href="a00985.html">TDS_DBC</a> * </td> <td class="paramname"><em>dbc</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">SQLPOINTER </td> <td class="paramname"><em>buffer</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">SQLINTEGER </td> <td class="paramname"><em>cbBuffer</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">void FAR * </td> <td class="paramname"><em>pcbBuffer</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const char * </td> <td class="paramname"><em>s</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">int </td> <td class="paramname"><em>len</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">int </td> <td class="paramname"><em>flag</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div><div class="memdoc"> <p>Copy a string to client setting size according to ODBC convenction. </p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">dbc</td><td>database connection. Can be NULL </td></tr> <tr><td class="paramname">buffer</td><td>client buffer </td></tr> <tr><td class="paramname">cbBuffer</td><td>client buffer size (in bytes) </td></tr> <tr><td class="paramname">pcbBuffer</td><td>pointer to SQLSMALLINT to hold string size </td></tr> <tr><td class="paramname">s</td><td>string to copy </td></tr> <tr><td class="paramname">len</td><td>len of string to copy. <0 null terminated </td></tr> <tr><td class="paramname">flag</td><td>set of flag 0x10 SQLINTEGER </td></tr> </table> </dd> </dl> <div class="dynheader"> Here is the call graph for this function:</div> <div class="dyncontent"> <div class="center"><iframe scrolling="no" frameborder="0" src="a00527_gadba4490bf3183799a70c9e2f44fab331_cgraph.svg" width="446" height="38"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe> </div> </div> </div> </div> </div><!-- contents --> <!-- start footer part --> <hr class="footer"/><address class="footer"><small> Generated by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.12 </small></address> </body> </html>