📄 group__complex.html
字号:
</dd></dl><dl compact><dt><b>See also:</b></dt><dd><a class="el" href="group__complex.html#ga0">sqlo_prepare</a>, <a class="el" href="group__complex.html#ga1">sqlo_bind_by_name</a>, <a class="el" href="group__complex.html#ga5">sqlo_define_by_pos</a> </dd></dl><dl compact><dt><b>Since:</b></dt><dd>Version 2.2 </dd></dl><p>Definition at line <a class="el" href="sqlora_8c-source.html#l06748">6748</a> of file <a class="el" href="sqlora_8c-source.html">sqlora.c</a>.<p>References <a class="el" href="sqlora_8c-source.html#l03039">_bind_by_pos2()</a>, <a class="el" href="sqlora_8c-source.html#l02822">_get_data_type_str()</a>, <a class="el" href="sqlora_8c-source.html#l04319">_get_trace_fp()</a>, <a class="el" href="sqlora_8c-source.html#l00367">CHECK_STHANDLE</a>, <a class="el" href="sqlora_8c-source.html#l00565">_sqlo_stmt_struct::dbp</a>, <a class="el" href="group__constants.html#gga4a36">SQLO_INVALID_STMT_HANDLE</a>, <a class="el" href="sqlora_8c.html#a35">sqlo_stmt_struct_ptr_t</a>, and <a class="el" href="sqlora_8c-source.html#l00238">TRACE</a>. </td> </tr></table><p>Here is the call graph for this function:<p><center><img src="group__complex_ga4_cgraph.png" border="0" usemap="#group__complex_ga4_cgraph_map" alt=""></center><map name="group__complex_ga4_cgraph_map"><area href="sqlora_8c.html#a150" shape="rect" coords="197,91,301,110" alt=""><area href="sqlora_8c.html#a128" shape="rect" coords="529,51,625,70" alt=""><area href="sqlora_8c.html#a111" shape="rect" coords="351,141,481,159" alt=""><area href="sqlora_8c.html#a124" shape="rect" coords="372,5,460,23" alt=""><area href="sqlora_8c.html#a109" shape="rect" coords="369,98,463,117" alt=""></map><a class="anchor" name="ga2" doxytag="sqlora.h::sqlo_bind_ref_cursor" ></a><p><table class="mdTable" width="100%" cellpadding="2" cellspacing="0"> <tr> <td class="mdRow"> <table cellpadding="0" cellspacing="0" border="0"> <tr> <td class="md" nowrap valign="top"> int sqlo_bind_ref_cursor </td> <td class="md" valign="top">( </td> <td class="md" nowrap valign="top"><a class="el" href="group__typedefs.html#ga1">sqlo_stmt_handle_t</a> </td> <td class="mdname" nowrap> <em>sth</em>, </td> </tr> <tr> <td class="md" nowrap align="right"></td> <td></td> <td class="md" nowrap>const char * </td> <td class="mdname" nowrap> <em>cursor_name</em>, </td> </tr> <tr> <td class="md" nowrap align="right"></td> <td></td> <td class="md" nowrap>int * </td> <td class="mdname" nowrap> <em>sth2p</em></td> </tr> <tr> <td></td> <td class="md">) </td> <td class="md" colspan="2"></td> </tr> </table> </td> </tr></table><table cellspacing=5 cellpadding=0 border=0> <tr> <td> </td> <td><p>Bind a REF CURSOR. <p>Binds a ref cursor and returns a new sth, which you can use to retrieve the data. <dl compact><dt><b>Note:</b></dt><dd>You can also use <a class="el" href="group__complex.html#ga1">sqlo_bind_by_name</a> and supply as SQLOT_RSET as type and the address of the new statement handle as param_addr. All other parameters are ignored.</dd></dl><dl compact><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign=top><em>sth</em> </td><td>I - The statement handle </td></tr> <tr><td valign=top><em>cursor_name</em> </td><td>I - The bind name of the cursor </td></tr> <tr><td valign=top><em>sth2p</em> </td><td>O - The new statement handle for the ref cursor.</td></tr> </table></dl><dl compact><dt><b>Example:</b></dt><dd>Example using sqlo_values to get the result: <div class="fragment"><pre><span class="comment">/* $Id: ex17.c,v 1.3 2002/08/24 12:54:47 kpoitschke Exp $ */</span><span class="preprocessor">#include <stdio.h></span><span class="preprocessor">#include <stdlib.h></span><span class="preprocessor">#include "examples.h"</span><span class="keywordtype">int</span> select_refcursor(<a class="code" href="group__typedefs.html#ga0">sqlo_db_handle_t</a> dbh, <span class="keywordtype">double</span> min_salary){ <a class="code" href="group__typedefs.html#ga1">sqlo_stmt_handle_t</a> sth = <a class="code" href="group__constants.html#gga5a49">SQLO_STH_INIT</a>; <a class="code" href="group__typedefs.html#ga1">sqlo_stmt_handle_t</a> st2h; <span class="comment">/* handle of the ref cursor */</span> <span class="keywordtype">double</span> sal = min_salary; CONST <span class="keywordtype">char</span> **v; <span class="keywordtype">int</span> status; CONST <span class="keywordtype">char</span> * stmt = <span class="stringliteral">"BEGIN\n"</span> <span class="stringliteral">" OPEN :c1 FOR SELECT ENAME, SAL FROM EMP WHERE SAL >= :min_sal ORDER BY 2,1;\n"</span> <span class="stringliteral">"END;\n"</span>; <span class="comment">/* parse the statement */</span> <span class="keywordflow">if</span> ( 0 <= (sth = <a class="code" href="group__complex.html#ga186">sqlo_prepare</a>(dbh, stmt))) { <span class="comment">/* bind all variables */</span> <span class="keywordflow">if</span> (<a class="code" href="group__constants.html#gga3a25">SQLO_SUCCESS</a> != ( <a class="code" href="group__complex.html#ga2">sqlo_bind_ref_cursor</a>(sth, <span class="stringliteral">":c1"</span>, &st2h)) || (<a class="code" href="group__complex.html#ga187">sqlo_bind_by_name</a>(sth, <span class="stringliteral">":min_sal"</span>, SQLOT_FLT, &sal, <span class="keyword">sizeof</span>(sal), 0, 0) ) ) { error_exit(dbh, <span class="stringliteral">"sqlo_bind_by_name"</span>); } <span class="keywordflow">else</span> { <span class="comment">/* execute the PL/SQL block */</span> <span class="keywordflow">if</span> (<a class="code" href="group__constants.html#gga3a25">SQLO_SUCCESS</a> != <a class="code" href="group__complex.html#ga194">sqlo_execute</a>(sth, 1)) error_exit(dbh, <span class="stringliteral">"sqlo_execute"</span>); } <span class="comment">/* execute the refcursor */</span> <span class="keywordflow">if</span> (<a class="code" href="group__constants.html#gga3a25">SQLO_SUCCESS</a> != <a class="code" href="group__complex.html#ga194">sqlo_execute</a>(st2h, 1)) { error_exit(dbh, <span class="stringliteral">"sqlo_execute(ref)"</span>); } <span class="keywordflow">while</span> (<a class="code" href="group__constants.html#gga3a25">SQLO_SUCCESS</a> == (status = <a class="code" href="group__easy.html#ga167">sqlo_fetch</a>(st2h, 1))) { v = <a class="code" href="group__easy.html#ga168">sqlo_values</a>(st2h, NULL, 1); printf(<span class="stringliteral">"Name=%-8s Salary= %-6s\n"</span>, v[0], v[1]); } <span class="keywordflow">if</span> (status != <a class="code" href="group__constants.html#gga3a32">SQLO_NO_DATA</a>) error_exit(dbh, <span class="stringliteral">"sqlo_fetch(st2)"</span>); <span class="keywordflow">if</span> (<a class="code" href="group__constants.html#gga3a25">SQLO_SUCCESS</a> != <a class="code" href="group__easy.html#ga172">sqlo_close</a>(sth)) error_exit(dbh, <span class="stringliteral">"sqlo_close(1)"</span>); <span class="keywordflow">if</span> (<a class="code" href="group__constants.html#gga3a25">SQLO_SUCCESS</a> != <a class="code" href="group__easy.html#ga172">sqlo_close</a>(st2h)) error_exit(dbh, <span class="stringliteral">"sqlo_close(2)"</span>); } <span class="keywordflow">else</span> { error_exit(dbh, <span class="stringliteral">"sqlo_prepare"</span>); } <span class="keywordflow">return</span> 1;}<span class="comment">/* $Id: ex17.c,v 1.3 2002/08/24 12:54:47 kpoitschke Exp $ */</span></pre></div> Example using bind variables: <div class="fragment"><pre><span class="comment">/* $Id: ex18.c,v 1.3 2002/08/24 12:54:47 kpoitschke Exp $ */</span><span class="preprocessor">#include <stdio.h></span><span class="preprocessor">#include <stdlib.h></span><span class="preprocessor">#include "examples.h"</span><span class="keywordtype">int</span> select_refcursor2(<a class="code" href="group__typedefs.html#ga0">sqlo_db_handle_t</a> dbh, <span class="keywordtype">double</span> min_salary){ <a class="code" href="group__typedefs.html#ga1">sqlo_stmt_handle_t</a> sth = <a class="code" href="group__constants.html#gga5a49">SQLO_STH_INIT</a>; <a class="code" href="group__typedefs.html#ga1">sqlo_stmt_handle_t</a> st2h; <span class="comment">/* handle of the ref cursor */</span> <span class="keywordtype">double</span> sal = min_salary; <span class="keywordtype">int</span> status; <span class="keywordtype">char</span> name[30]; <span class="keywordtype">double</span> salary; <span class="keywordtype">short</span> nind, sind; CONST <span class="keywordtype">char</span> * stmt = <span class="stringliteral">"BEGIN\n"</span> <span class="stringliteral">" OPEN :c1 FOR SELECT ENAME, SAL FROM EMP WHERE SAL >= :min_sal ORDER BY 2,1;\n"</span> <span class="stringliteral">"END;\n"</span>; <span class="comment">/* parse the statement */</span> <span class="keywordflow">if</span> ( 0 <= (sth = <a class="code" href="group__complex.html#ga186">sqlo_prepare</a>(dbh, stmt))) { <span class="comment">/* bind all variables */</span> <span class="keywordflow">if</span> (<a class="code" href="group__constants.html#gga3a25">SQLO_SUCCESS</a> != (<a class="code" href="group__complex.html#ga187">sqlo_bind_by_name</a>(sth, <span class="stringliteral">":c1"</span>, SQLOT_RSET, &st2h, 0, 0, 0)) || (<a class="code" href="group__complex.html#ga187">sqlo_bind_by_name</a>(sth, <span class="stringliteral">":min_sal"</span>, SQLOT_FLT, &sal, <span class="keyword">sizeof</span>(sal), 0, 0) ) ) { error_exit(dbh, <span class="stringliteral">"sqlo_bind_by_name"</span>); } <span class="keywordflow">else</span> { <span class="comment">/* execute the PL/SQL block */</span> <span class="keywordflow">if</span> (<a class="code" href="group__constants.html#gga3a25">SQLO_SUCCESS</a> != <a class="code" href="group__complex.html#ga194">sqlo_execute</a>(sth, 1)) error_exit(dbh, <span class="stringliteral">"sqlo_execute"</span>); } <span class="comment">/* execute the second cursor */</span> <span class="keywordflow">if</span>(<a class="code" href="group__constants.html#gga3a25">SQLO_SUCCESS</a> != <a class="code" href="group__complex.html#ga194">sqlo_execute</a>(st2h, 1)) error_exit(dbh, <span class="stringliteral">"sqlo_execute"</span>); <span class="keywordflow">if</span> (<a class="code" href="group__constants.html#gga3a25">SQLO_SUCCESS</a> != ( <a class="code" href="group__complex.html#ga192">sqlo_define_by_pos</a>(st2h, 1, SQLOT_STR, name, <span class="keyword">sizeof</span>(name), &nind, 0, 0) ) || ( <a class="code" href="group__complex.html#ga192">sqlo_define_by_pos</a>(st2h, 2, SQLOT_FLT, &salary, <span class="keyword">sizeof</span>(salary), &sind, 0, 0) ) ) { error_exit(dbh, <span class="stringliteral">"sqlo_define_by_pos"</span>); } <span class="keywordflow">while</span> (<a class="code" href="group__constants.html#gga3a25">SQLO_SUCCESS</a> == (status = <a class="code" href="group__easy.html#ga167">sqlo_fetch</a>(st2h, 1))) { printf(<span class="stringliteral">"Name=%-8s Salary= %6.2f\n"</span>, name, salary); } <span class="keywordflow">if</span> (status != <a class="code" href="group__constants.html#gga3a32">SQLO_NO_DATA</a>) error_exit(dbh, <span class="stringliteral">"sqlo_fetch(st2)"</span>); <span class="keywordflow">if</span> (<a class="code" href="group__constants.html#gga3a25">SQLO_SUCCESS</a> != <a class="code" href="group__easy.html#ga172">sqlo_close</a>(sth)) error_exit(dbh, <span class="stringliteral">"sqlo_close(1)"</span>); <span class="keywordflow">if</span> (<a class="code" href="group__constants.html#gga3a25">SQLO_SUCCESS</a> != <a class="code" href="group__easy.html#ga172">sqlo_close</a>(st2h)) error_exit(dbh, <span class="stringliteral">"sqlo_close(2)"</span>); } <span class="keywordflow">else</span> { error_exit(dbh, <span class="stringliteral">"sqlo_prepare"</span>); } <span class="keywordflow">return</span> 1;}<span class="comment">/* $Id: ex18.c,v 1.3 2002/08/24 12:54:47 kpoitschke Exp $ */</span></pre></div> </dd></dl><dl compact><dt><b>Examples: </b></dt><dd><a class="el" href="ex17_8c-example.html#a48">ex17.c</a>.</dl><p>Referenced by <a class="el" href="sqlora_8c-source.html#l06481">sqlo_bind_by_name()</a>. </td> </tr></table><a class="anchor" name="ga5" doxytag="sqlora.h::sqlo_define_by_pos" ></a><p><table class="mdTable" width="100%" cellpadding="2" cellspacing="0"> <tr> <td class="mdRow"> <table cellpadding="0" cellspacing="0" border="0"> <tr> <td class="md" nowrap valign="top"> int sqlo_define_by_pos </td> <td class="md" valign="top">( </td> <td class="md" nowrap valign="top"><a class="el" href="group__typedefs.html#ga1">sqlo_stmt_handle_t</a> </td> <td class="mdname" nowrap> <em>sth</em>, </td> </tr> <tr> <td class="md" nowrap align="right"></td> <td></td> <td class="md" nowrap>int </td> <td class="mdname" nowrap> <em>value_pos</em>, </td>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -