<!-- This comment will put IE 6, 7 and 8 in quirks mode --> <!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"/> <title>FreeTDS API: Remote Procedure functions</title> <link href="tabs.css" rel="stylesheet" type="text/css"/> <link href="search/search.css" rel="stylesheet" type="text/css"/> <script type="text/javaScript" src="search/search.js"></script> <link href="doxygen.css" rel="stylesheet" type="text/css"/> </head> <body onload='searchBox.OnSelectItem(0);'> <!-- Generated by Doxygen 1.6.3 --> <script type="text/javascript"><!-- var searchBox = new SearchBox("searchBox", "search",false,'Search'); --></script> <div class="navigation" id="top"> <div class="tabs"> <ul> <li><a href="index.html"><span>Main Page</span></a></li> <li><a href="pages.html"><span>Related Pages</span></a></li> <li><a href="modules.html"><span>Modules</span></a></li> <li><a href="annotated.html"><span>Classes</span></a></li> <li><a href="files.html"><span>Files</span></a></li> <li> <div id="MSearchBox" class="MSearchBoxInactive"> <img id="MSearchSelect" src="search/search.png" onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" alt=""/> <input type="text" id="MSearchField" value="Search" accesskey="S" onfocus="searchBox.OnSearchFieldFocus(true)" onblur="searchBox.OnSearchFieldFocus(false)" onkeyup="searchBox.OnSearchFieldChange(event)"/> <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a> </div> </li> </ul> </div> </div> <div class="contents"> <h1>Remote Procedure functions<br/> <small> [<a class="el" href="a00285.html">The db-lib API</a>]</small> </h1> <p>Functions used with stored procedures. <a href="#_details">More...</a></p> <table border="0" cellpadding="0" cellspacing="0"> <tr><td colspan="2"><h2>Functions</h2></td></tr> <tr><td class="memItemLeft" align="right" valign="top">DBBOOL </td><td class="memItemRight" valign="bottom"><a class="el" href="a00287.html#ga7a5062dac92ccedc8459f6d4a530ffb7">dbhasretstat</a> (<a class="el" href="a00098.html">DBPROCESS</a> *dbproc)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Determine if query generated a return status number. <a href="#ga7a5062dac92ccedc8459f6d4a530ffb7"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="a00287.html#gaff09873008411a0573f6d1a9e6c7cf4b">dbnumrets</a> (<a class="el" href="a00098.html">DBPROCESS</a> *dbproc)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Get count of output parameters filled by a stored procedure. <a href="#gaff09873008411a0573f6d1a9e6c7cf4b"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">BYTE * </td><td class="memItemRight" valign="bottom"><a class="el" href="a00287.html#ga42e187003b74fec6e9ca92d410bfb9c0">dbretdata</a> (<a class="el" href="a00098.html">DBPROCESS</a> *dbproc, int retnum)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Get value of an output parameter filled by a stored procedure. <a href="#ga42e187003b74fec6e9ca92d410bfb9c0"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="a00287.html#gab705bf94be535e9d8fc4edc0f48c98b0">dbretlen</a> (<a class="el" href="a00098.html">DBPROCESS</a> *dbproc, int retnum)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Get size of an output parameter filled by a stored procedure. <a href="#gab705bf94be535e9d8fc4edc0f48c98b0"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">char * </td><td class="memItemRight" valign="bottom"><a class="el" href="a00287.html#ga0311328d63bae5d9bd5aea5ea4914223">dbretname</a> (<a class="el" href="a00098.html">DBPROCESS</a> *dbproc, int retnum)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Get name of an output parameter filled by a stored procedure. <a href="#ga0311328d63bae5d9bd5aea5ea4914223"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">DBINT </td><td class="memItemRight" valign="bottom"><a class="el" href="a00287.html#ga2306039d73fbc7045f257b0e750c37b4">dbretstatus</a> (<a class="el" href="a00098.html">DBPROCESS</a> *dbproc)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Fetch status value returned by query or remote procedure call. <a href="#ga2306039d73fbc7045f257b0e750c37b4"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="a00287.html#gaa478c8b96923bca02d158d966172ec1b">dbrettype</a> (<a class="el" href="a00098.html">DBPROCESS</a> *dbproc, int retnum)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Get datatype of a stored procedure's return parameter. <a href="#gaa478c8b96923bca02d158d966172ec1b"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">RETCODE </td><td class="memItemRight" valign="bottom"><a class="el" href="a00287.html#ga5b4374c13c7a83cd4345b0bfa3e787bd">dbrpcinit</a> (<a class="el" href="a00098.html">DBPROCESS</a> *dbproc, const char rpcname[], DBSMALLINT options)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Initialize a remote procedure call. <a href="#ga5b4374c13c7a83cd4345b0bfa3e787bd"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">RETCODE </td><td class="memItemRight" valign="bottom"><a class="el" href="a00287.html#ga98b9b5db66975dafae8d422218e4de45">dbrpcparam</a> (<a class="el" href="a00098.html">DBPROCESS</a> *dbproc, const char paramname[], BYTE status, int type, DBINT maxlen, DBINT datalen, BYTE *value)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Add a parameter to a remote procedure call. <a href="#ga98b9b5db66975dafae8d422218e4de45"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">RETCODE </td><td class="memItemRight" valign="bottom"><a class="el" href="a00287.html#gafa4dfd181be21e49c397f7daaa9cf96c">dbrpcsend</a> (<a class="el" href="a00098.html">DBPROCESS</a> *dbproc)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Execute the procedure and free associated memory. <a href="#gafa4dfd181be21e49c397f7daaa9cf96c"></a><br/></td></tr> </table> <hr/><a name="_details"></a><h2>Detailed Description</h2> <p>Functions used with stored procedures. </p> <p>Especially useful for OUTPUT parameters, because modern Microsoft servers do not return output parameter data to the client unless the procedure was invoked with <a class="el" href="a00287.html#gafa4dfd181be21e49c397f7daaa9cf96c" title="Execute the procedure and free associated memory.">dbrpcsend()</a>. </p> <hr/><h2>Function Documentation</h2> <a class="anchor" id="ga7a5062dac92ccedc8459f6d4a530ffb7"></a><!-- doxytag: member="dblib.c::dbhasretstat" ref="ga7a5062dac92ccedc8459f6d4a530ffb7" args="(DBPROCESS *dbproc)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">DBBOOL dbhasretstat </td> <td>(</td> <td class="paramtype"><a class="el" href="a00098.html">DBPROCESS</a> * </td> <td class="paramname"> <em>dbproc</em></td> <td> ) </td> <td></td> </tr> </table> </div> <div class="memdoc"> <p>Determine if query generated a return status number. </p> <dl><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>dbproc</em> </td><td>contains all information needed by db-lib to manage communications with the server. </td></tr> </table> </dd> </dl> <dl><dt><b>Return values:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>TRUE</em> </td><td>fetch return status with <a class="el" href="a00287.html#ga2306039d73fbc7045f257b0e750c37b4" title="Fetch status value returned by query or remote procedure call.">dbretstatus()</a>. </td></tr> <tr><td valign="top"></td><td valign="top"><em>FALSE</em> </td><td>no return status. </td></tr> </table> </dd> </dl> <dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="a00286.html#gac67e6a022bb81195a120397ade07f5dd" title="Read result row into the row buffer and into any bound host variables.">dbnextrow()</a>, <a class="el" href="a00286.html#ga4e26d949be2c3bf71b1a33c75b11d931" title="Set up query results.">dbresults()</a>, <a class="el" href="a00287.html#ga42e187003b74fec6e9ca92d410bfb9c0" title="Get value of an output parameter filled by a stored procedure.">dbretdata()</a>, <a class="el" href="a00287.html#ga2306039d73fbc7045f257b0e750c37b4" title="Fetch status value returned by query or remote procedure call.">dbretstatus()</a>, <a class="el" href="a00287.html#ga5b4374c13c7a83cd4345b0bfa3e787bd" title="Initialize a remote procedure call.">dbrpcinit()</a>, <a class="el" href="a00287.html#ga98b9b5db66975dafae8d422218e4de45" title="Add a parameter to a remote procedure call.">dbrpcparam()</a>, <a class="el" href="a00287.html#gafa4dfd181be21e49c397f7daaa9cf96c" title="Execute the procedure and free associated memory.">dbrpcsend()</a>. </dd></dl> </div> </div> <a class="anchor" id="gaff09873008411a0573f6d1a9e6c7cf4b"></a><!-- doxytag: member="dblib.c::dbnumrets" ref="gaff09873008411a0573f6d1a9e6c7cf4b" args="(DBPROCESS *dbproc)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">int dbnumrets </td> <td>(</td> <td class="paramtype"><a class="el" href="a00098.html">DBPROCESS</a> * </td> <td class="paramname"> <em>dbproc</em></td> <td> ) </td> <td></td> </tr> </table> </div> <div class="memdoc"> <p>Get count of output parameters filled by a stored procedure. </p> <dl><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>dbproc</em> </td><td>contains all information needed by db-lib to manage communications with the server. </td></tr> </table> </dd> </dl> <dl class="return"><dt><b>Returns:</b></dt><dd>How many, possibly zero. </dd></dl> <dl class="remark"><dt><b>Remarks:</b></dt><dd>This name sounds funny. </dd></dl> <dl class="see"><dt><b>See also:</b></dt><dd></dd></dl> </div> </div> <a class="anchor" id="ga42e187003b74fec6e9ca92d410bfb9c0"></a><!-- doxytag: member="dblib.c::dbretdata" ref="ga42e187003b74fec6e9ca92d410bfb9c0" args="(DBPROCESS *dbproc, int retnum)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">BYTE* dbretdata </td> <td>(</td> <td class="paramtype"><a class="el" href="a00098.html">DBPROCESS</a> * </td> <td class="paramname"> <em>dbproc</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">int </td> <td class="paramname"> <em>retnum</em></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td></td> </tr> </table> </div> <div class="memdoc"> <p>Get value of an output parameter filled by a stored procedure. </p> <dl><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>dbproc</em> </td><td>contains all information needed by db-lib to manage communications with the server. </td></tr> <tr><td valign="top"></td><td valign="top"><em>retnum</em> </td><td>Nth parameter between <code>1</code> and the return value from <code><a class="el" href="a00287.html#gaff09873008411a0573f6d1a9e6c7cf4b" title="Get count of output parameters filled by a stored procedure.">dbnumrets()</a></code>. </td></tr> </table> </dd> </dl> <dl class="return"><dt><b>Returns:</b></dt><dd>Address of a return parameter value, or <code>NULL</code> if no such <em>retnum</em>. </dd></dl> <dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="a00286.html#gac67e6a022bb81195a120397ade07f5dd" title="Read result row into the row buffer and into any bound host variables.">dbnextrow()</a>, <a class="el" href="a00287.html#gaff09873008411a0573f6d1a9e6c7cf4b" title="Get count of output parameters filled by a stored procedure.">dbnumrets()</a>, <a class="el" href="a00286.html#ga4e26d949be2c3bf71b1a33c75b11d931" title="Set up query results.">dbresults()</a>, <a class="el" href="a00287.html#gab705bf94be535e9d8fc4edc0f48c98b0" title="Get size of an output parameter filled by a stored procedure.">dbretlen()</a>, <a class="el" href="a00287.html#ga0311328d63bae5d9bd5aea5ea4914223" title="Get name of an output parameter filled by a stored procedure.">dbretname()</a>, <a class="el" href="a00287.html#gaa478c8b96923bca02d158d966172ec1b" title="Get datatype of a stored procedure's return parameter.">dbrettype()</a>, <a class="el" href="a00287.html#ga5b4374c13c7a83cd4345b0bfa3e787bd" title="Initialize a remote procedure call.">dbrpcinit()</a>, <a class="el" href="a00287.html#ga98b9b5db66975dafae8d422218e4de45" title="Add a parameter to a remote procedure call.">dbrpcparam()</a>. </dd></dl> <dl class="todo"><dt><b><a class="el" href="a00306.html#_todo000013">Todo:</a></b></dt><dd>Handle blobs. </dd></dl> </div> </div> <a class="anchor" id="gab705bf94be535e9d8fc4edc0f48c98b0"></a><!-- doxytag: member="dblib.c::dbretlen" ref="gab705bf94be535e9d8fc4edc0f48c98b0" args="(DBPROCESS *dbproc, int retnum)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">int dbretlen </td> <td>(</td> <td class="paramtype"><a class="el" href="a00098.html">DBPROCESS</a> * </td> <td class="paramname"> <em>dbproc</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">int </td> <td class="paramname"> <em>retnum</em></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td></td> </tr> </table> </div> <div class="memdoc"> <p>Get size of an output parameter filled by a stored procedure. </p> <dl><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>dbproc</em> </td><td>contains all information needed by db-lib to manage communications with the server. </td></tr> <tr><td valign="top"></td><td valign="top"><em>retnum</em> </td><td>Nth parameter between <code>1</code> and the return value from <code><a class="el" href="a00287.html#gaff09873008411a0573f6d1a9e6c7cf4b" title="Get count of output parameters filled by a stored procedure.">dbnumrets()</a></code>. </td></tr> </table> </dd> </dl> <dl class="return"><dt><b>Returns:</b></dt><dd>Size of a return parameter value, or <code>NULL</code> if no such <em>retnum</em>. </dd></dl> <dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="a00286.html#gac67e6a022bb81195a120397ade07f5dd" title="Read result row into the row buffer and into any bound host variables.">dbnextrow()</a>, <a class="el" href="a00287.html#gaff09873008411a0573f6d1a9e6c7cf4b" title="Get count of output parameters filled by a stored procedure.">dbnumrets()</a>, <a class="el" href="a00286.html#ga4e26d949be2c3bf71b1a33c75b11d931" title="Set up query results.">dbresults()</a>, <a class="el" href="a00287.html#ga42e187003b74fec6e9ca92d410bfb9c0" title="Get value of an output parameter filled by a stored procedure.">dbretdata()</a>, <a class="el" href="a00287.html#ga0311328d63bae5d9bd5aea5ea4914223" title="Get name of an output parameter filled by a stored procedure.">dbretname()</a>, <a class="el" href="a00287.html#gaa478c8b96923bca02d158d966172ec1b" title="Get datatype of a stored procedure's return parameter.">dbrettype()</a>, <a class="el" href="a00287.html#ga5b4374c13c7a83cd4345b0bfa3e787bd" title="Initialize a remote procedure call.">dbrpcinit()</a>, <a class="el" href="a00287.html#ga98b9b5db66975dafae8d422218e4de45" title="Add a parameter to a remote procedure call.">dbrpcparam()</a>. </dd></dl> </div> </div> <a class="anchor" id="ga0311328d63bae5d9bd5aea5ea4914223"></a><!-- doxytag: member="dblib.c::dbretname" ref="ga0311328d63bae5d9bd5aea5ea4914223" args="(DBPROCESS *dbproc, int retnum)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">char* dbretname </td> <td>(</td> <td class="paramtype"><a class="el" href="a00098.html">DBPROCESS</a> * </td> <td class="paramname"> <em>dbproc</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">int </td> <td class="paramname"> <em>retnum</em></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td></td> </tr> </table> </div> <div class="memdoc"> <p>Get name of an output parameter filled by a stored procedure. </p> <dl><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>dbproc</em> </td><td>contains all information needed by db-lib to manage communications with the server. </td></tr> <tr><td valign="top"></td><td valign="top"><em>retnum</em> </td><td>Nth parameter between <code>1</code> and the return value from <code><a class="el" href="a00287.html#gaff09873008411a0573f6d1a9e6c7cf4b" title="Get count of output parameters filled by a stored procedure.">dbnumrets()</a></code>. </td></tr> </table> </dd> </dl> <dl class="return"><dt><b>Returns:</b></dt><dd>ASCII null-terminated string, <code>NULL</code> if no such <em>retnum</em>. </dd></dl> <dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="a00286.html#gac67e6a022bb81195a120397ade07f5dd" title="Read result row into the row buffer and into any bound host variables.">dbnextrow()</a>, <a class="el" href="a00287.html#gaff09873008411a0573f6d1a9e6c7cf4b" title="Get count of output parameters filled by a stored procedure.">dbnumrets()</a>, <a class="el" href="a00286.html#ga4e26d949be2c3bf71b1a33c75b11d931" title="Set up query results.">dbresults()</a>, <a class="el" href="a00287.html#ga42e187003b74fec6e9ca92d410bfb9c0" title="Get value of an output parameter filled by a stored procedure.">dbretdata()</a>, <a class="el" href="a00287.html#gab705bf94be535e9d8fc4edc0f48c98b0" title="Get size of an output parameter filled by a stored procedure.">dbretlen()</a>, <a class="el" href="a00287.html#gaa478c8b96923bca02d158d966172ec1b" title="Get datatype of a stored procedure's return parameter.">dbrettype()</a>, <a class="el" href="a00287.html#ga5b4374c13c7a83cd4345b0bfa3e787bd" title="Initialize a remote procedure call.">dbrpcinit()</a>, <a class="el" href="a00287.html#ga98b9b5db66975dafae8d422218e4de45" title="Add a parameter to a remote procedure call.">dbrpcparam()</a>. </dd></dl> </div> </div> <a class="anchor" id="ga2306039d73fbc7045f257b0e750c37b4"></a><!-- doxytag: member="dblib.c::dbretstatus" ref="ga2306039d73fbc7045f257b0e750c37b4" args="(DBPROCESS *dbproc)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">DBINT dbretstatus </td> <td>(</td> <td class="paramtype"><a class="el" href="a00098.html">DBPROCESS</a> * </td> <td class="paramname"> <em>dbproc</em></td> <td> ) </td> <td></td> </tr> </table> </div> <div class="memdoc"> <p>Fetch status value returned by query or remote procedure call. </p> <dl><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>dbproc</em> </td><td>contains all information needed by db-lib to manage communications with the server. </td></tr> </table> </dd> </dl> <dl class="return"><dt><b>Returns:</b></dt><dd>return value </dd></dl> <dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="a00287.html#ga7a5062dac92ccedc8459f6d4a530ffb7" title="Determine if query generated a return status number.">dbhasretstat()</a>, <a class="el" href="a00286.html#gac67e6a022bb81195a120397ade07f5dd" title="Read result row into the row buffer and into any bound host variables.">dbnextrow()</a>, <a class="el" href="a00286.html#ga4e26d949be2c3bf71b1a33c75b11d931" title="Set up query results.">dbresults()</a>, <a class="el" href="a00287.html#ga42e187003b74fec6e9ca92d410bfb9c0" title="Get value of an output parameter filled by a stored procedure.">dbretdata()</a>, <a class="el" href="a00287.html#ga5b4374c13c7a83cd4345b0bfa3e787bd" title="Initialize a remote procedure call.">dbrpcinit()</a>, <a class="el" href="a00287.html#ga98b9b5db66975dafae8d422218e4de45" title="Add a parameter to a remote procedure call.">dbrpcparam()</a>, <a class="el" href="a00287.html#gafa4dfd181be21e49c397f7daaa9cf96c" title="Execute the procedure and free associated memory.">dbrpcsend()</a>. </dd></dl> </div> </div> <a class="anchor" id="gaa478c8b96923bca02d158d966172ec1b"></a><!-- doxytag: member="dblib.c::dbrettype" ref="gaa478c8b96923bca02d158d966172ec1b" args="(DBPROCESS *dbproc, int retnum)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">int dbrettype </td> <td>(</td> <td class="paramtype"><a class="el" href="a00098.html">DBPROCESS</a> * </td> <td class="paramname"> <em>dbproc</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">int </td> <td class="paramname"> <em>retnum</em></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td></td> </tr> </table> </div> <div class="memdoc"> <p>Get datatype of a stored procedure's return parameter. </p> <dl><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>dbproc</em> </td><td>contains all information needed by db-lib to manage communications with the server. </td></tr> <tr><td valign="top"></td><td valign="top"><em>retnum</em> </td><td>Nth return parameter, between 1 and <code><a class="el" href="a00287.html#gaff09873008411a0573f6d1a9e6c7cf4b" title="Get count of output parameters filled by a stored procedure.">dbnumrets()</a></code>. </td></tr> </table> </dd> </dl> <dl class="return"><dt><b>Returns:</b></dt><dd>SYB* datatype token, or -1 if <em>retnum</em> is out of range. </dd></dl> <dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="a00286.html#gac67e6a022bb81195a120397ade07f5dd" title="Read result row into the row buffer and into any bound host variables.">dbnextrow()</a>, <a class="el" href="a00287.html#gaff09873008411a0573f6d1a9e6c7cf4b" title="Get count of output parameters filled by a stored procedure.">dbnumrets()</a>, <a class="el" href="a00286.html#gac25ae21ca19777ffab1c013bd6049ebf" title="Print a token value's name to a buffer.">dbprtype()</a>, <a class="el" href="a00286.html#ga4e26d949be2c3bf71b1a33c75b11d931" title="Set up query results.">dbresults()</a>, <a class="el" href="a00287.html#ga42e187003b74fec6e9ca92d410bfb9c0" title="Get value of an output parameter filled by a stored procedure.">dbretdata()</a>, <a class="el" href="a00287.html#gab705bf94be535e9d8fc4edc0f48c98b0" title="Get size of an output parameter filled by a stored procedure.">dbretlen()</a>, <a class="el" href="a00287.html#ga0311328d63bae5d9bd5aea5ea4914223" title="Get name of an output parameter filled by a stored procedure.">dbretname()</a>, <a class="el" href="a00287.html#ga5b4374c13c7a83cd4345b0bfa3e787bd" title="Initialize a remote procedure call.">dbrpcinit()</a>, <a class="el" href="a00287.html#ga98b9b5db66975dafae8d422218e4de45" title="Add a parameter to a remote procedure call.">dbrpcparam()</a>. </dd></dl> </div> </div> <a class="anchor" id="ga5b4374c13c7a83cd4345b0bfa3e787bd"></a><!-- doxytag: member="rpc.c::dbrpcinit" ref="ga5b4374c13c7a83cd4345b0bfa3e787bd" args="(DBPROCESS *dbproc, const char rpcname[], DBSMALLINT options)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">RETCODE dbrpcinit </td> <td>(</td> <td class="paramtype"><a class="el" href="a00098.html">DBPROCESS</a> * </td> <td class="paramname"> <em>dbproc</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const char </td> <td class="paramname"> <em>rpcname</em>[], </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">DBSMALLINT </td> <td class="paramname"> <em>options</em></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td></td> </tr> </table> </div> <div class="memdoc"> <p>Initialize a remote procedure call. </p> <dl><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>dbproc</em> </td><td>contains all information needed by db-lib to manage communications with the server. </td></tr> <tr><td valign="top"></td><td valign="top"><em>rpcname</em> </td><td>name of the stored procedure to be run. </td></tr> <tr><td valign="top"></td><td valign="top"><em>options</em> </td><td>Only supported option would be DBRPCRECOMPILE, which causes the stored procedure to be recompiled before executing. </td></tr> </table> </dd> </dl> <dl class="remark"><dt><b>Remarks:</b></dt><dd>The RPC functions are the only way to get back OUTPUT parameter data with db-lib from modern Microsoft servers. </dd></dl> <dl><dt><b>Return values:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>SUCCEED</em> </td><td>normal. </td></tr> <tr><td valign="top"></td><td valign="top"><em>FAIL</em> </td><td>on error </td></tr> </table> </dd> </dl> <dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="a00287.html#ga98b9b5db66975dafae8d422218e4de45" title="Add a parameter to a remote procedure call.">dbrpcparam()</a>, <a class="el" href="a00287.html#gafa4dfd181be21e49c397f7daaa9cf96c" title="Execute the procedure and free associated memory.">dbrpcsend()</a> </dd></dl> </div> </div> <a class="anchor" id="ga98b9b5db66975dafae8d422218e4de45"></a><!-- doxytag: member="rpc.c::dbrpcparam" ref="ga98b9b5db66975dafae8d422218e4de45" args="(DBPROCESS *dbproc, const char paramname[], BYTE status, int type, DBINT maxlen, DBINT datalen, BYTE *value)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">RETCODE dbrpcparam </td> <td>(</td> <td class="paramtype"><a class="el" href="a00098.html">DBPROCESS</a> * </td> <td class="paramname"> <em>dbproc</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const char </td> <td class="paramname"> <em>paramname</em>[], </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">BYTE </td> <td class="paramname"> <em>status</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">int </td> <td class="paramname"> <em>type</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">DBINT </td> <td class="paramname"> <em>maxlen</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">DBINT </td> <td class="paramname"> <em>datalen</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">BYTE * </td> <td class="paramname"> <em>value</em></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td></td> </tr> </table> </div> <div class="memdoc"> <p>Add a parameter to a remote procedure call. </p> <p>Call between <a class="el" href="a00287.html#ga5b4374c13c7a83cd4345b0bfa3e787bd" title="Initialize a remote procedure call.">dbrpcinit()</a> and <a class="el" href="a00287.html#gafa4dfd181be21e49c397f7daaa9cf96c" title="Execute the procedure and free associated memory.">dbrpcsend()</a> </p> <dl><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>dbproc</em> </td><td>contains all information needed by db-lib to manage communications with the server. </td></tr> <tr><td valign="top"></td><td valign="top"><em>paramname</em> </td><td>literal name of the parameter, according to the stored procedure (starts with '@'). Optional. If not used, parameters will be passed in order instead of by name. </td></tr> <tr><td valign="top"></td><td valign="top"><em>status</em> </td><td>must be DBRPCRETURN, if this parameter is a return parameter, else 0. </td></tr> <tr><td valign="top"></td><td valign="top"><em>type</em> </td><td>datatype of the value parameter e.g., SYBINT4, SYBCHAR. </td></tr> <tr><td valign="top"></td><td valign="top"><em>maxlen</em> </td><td>Maximum output size of the parameter's value to be returned by the stored procedure, usually the size of your host variable. Fixed-length datatypes take -1 (NULL or not). Non-OUTPUT parameters also use -1. Use 0 to send a NULL value for a variable length datatype. </td></tr> <tr><td valign="top"></td><td valign="top"><em>datalen</em> </td><td>For variable-length datatypes, the byte size of the data to be sent, exclusive of any null terminator. For fixed-length datatypes use -1. To send a NULL value, use 0. </td></tr> <tr><td valign="top"></td><td valign="top"><em>value</em> </td><td>Address of your host variable. </td></tr> </table> </dd> </dl> <dl><dt><b>Return values:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>SUCCEED</em> </td><td>normal. </td></tr> <tr><td valign="top"></td><td valign="top"><em>FAIL</em> </td><td>on error </td></tr> </table> </dd> </dl> <dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="a00287.html#ga5b4374c13c7a83cd4345b0bfa3e787bd" title="Initialize a remote procedure call.">dbrpcinit()</a>, <a class="el" href="a00287.html#gafa4dfd181be21e49c397f7daaa9cf96c" title="Execute the procedure and free associated memory.">dbrpcsend()</a> </dd></dl> </div> </div> <a class="anchor" id="gafa4dfd181be21e49c397f7daaa9cf96c"></a><!-- doxytag: member="rpc.c::dbrpcsend" ref="gafa4dfd181be21e49c397f7daaa9cf96c" args="(DBPROCESS *dbproc)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">RETCODE dbrpcsend </td> <td>(</td> <td class="paramtype"><a class="el" href="a00098.html">DBPROCESS</a> * </td> <td class="paramname"> <em>dbproc</em></td> <td> ) </td> <td></td> </tr> </table> </div> <div class="memdoc"> <p>Execute the procedure and free associated memory. </p> <dl><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>dbproc</em> </td><td>contains all information needed by db-lib to manage communications with the server. </td></tr> </table> </dd> </dl> <dl><dt><b>Return values:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>SUCCEED</em> </td><td>normal. </td></tr> <tr><td valign="top"></td><td valign="top"><em>FAIL</em> </td><td>on error </td></tr> </table> </dd> </dl> <dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="a00287.html#ga5b4374c13c7a83cd4345b0bfa3e787bd" title="Initialize a remote procedure call.">dbrpcinit()</a>, <a class="el" href="a00287.html#ga98b9b5db66975dafae8d422218e4de45" title="Add a parameter to a remote procedure call.">dbrpcparam()</a> </dd></dl> </div> </div> </div> <!--- window showing the filter options --> <div id="MSearchSelectWindow" onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" onkeydown="return searchBox.OnSearchSelectKey(event)"> <a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark"> </span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark"> </span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark"> </span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark"> </span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark"> </span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark"> </span>Defines</a></div> <!-- iframe showing the search results (closed by default) --> <div id="MSearchResultsWindow"> <iframe src="" frameborder="0" name="MSearchResults" id="MSearchResults"> </iframe> </div> <hr class="footer"/><address style="text-align: right;"><small>Generated on Wed Aug 17 22:22:31 2011 for FreeTDS API by <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address> </body> </html>