⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 resultset_8c-source.html

📁 ORACLE编程的好东西,纯C写的OCI封装.很好用,支持数据池.
💻 HTML
📖 第 1 页 / 共 5 页
字号:
<a name="l00538"></a>00538                     rs-&gt;<a class="code" href="struct_o_c_i___resultset.html#c15097d127ce4369796be68769a91d14">row_abs</a> += offset_save;<a name="l00539"></a>00539             }<a name="l00540"></a>00540 <a name="l00541"></a>00541             <span class="keywordflow">break</span>;<a name="l00542"></a>00542        }<a name="l00543"></a>00543         <span class="keywordflow">case</span> OCI_SFD_ABSOLUTE:<a name="l00544"></a>00544         {<a name="l00545"></a>00545             <span class="keywordflow">if</span> (offset == 0)<a name="l00546"></a>00546             {<a name="l00547"></a>00547                 res = FALSE;<a name="l00548"></a>00548             }<a name="l00549"></a>00549             <span class="keywordflow">else</span><a name="l00550"></a>00550             {<a name="l00551"></a>00551                 rs-&gt;<a class="code" href="struct_o_c_i___resultset.html#c15097d127ce4369796be68769a91d14">row_abs</a>   = 1;<a name="l00552"></a>00552                 rs-&gt;<a class="code" href="struct_o_c_i___resultset.html#540ba8a96856cdbc89885745e7c6c72f">row_cur</a>   = 1;         <a name="l00553"></a>00553 <a name="l00554"></a>00554                 res = OCI_FetchData(rs, mode, offset);<a name="l00555"></a>00555 <a name="l00556"></a>00556                 <span class="keywordflow">if</span> (res == TRUE)<a name="l00557"></a>00557                 {<a name="l00558"></a>00558                     rs-&gt;<a class="code" href="struct_o_c_i___resultset.html#c15097d127ce4369796be68769a91d14">row_abs</a> = offset;<a name="l00559"></a>00559 <a name="l00560"></a>00560                     rs-&gt;<a class="code" href="struct_o_c_i___resultset.html#356238d1be7f437365b64f38af66305c">bof</a>       = FALSE;<a name="l00561"></a>00561                     rs-&gt;<a class="code" href="struct_o_c_i___resultset.html#3a4dd67805dca28105e9c9c32cc893fe">eof</a>       = FALSE;<a name="l00562"></a>00562                 }<a name="l00563"></a>00563             }<a name="l00564"></a>00564 <a name="l00565"></a>00565             <span class="keywordflow">break</span>;<a name="l00566"></a>00566         }<a name="l00567"></a>00567         <span class="keywordflow">default</span>:<a name="l00568"></a>00568         {<a name="l00569"></a>00569             res = FALSE;<a name="l00570"></a>00570         }<a name="l00571"></a>00571     }<a name="l00572"></a>00572 <a name="l00573"></a>00573     <span class="keywordflow">return</span> res;<a name="l00574"></a>00574 }<a name="l00575"></a>00575 <a name="l00576"></a>00576 <span class="preprocessor">#ifdef OCI_CHECK_DATASTRINGS </span><a name="l00577"></a>00577 <span class="preprocessor"></span><a name="l00578"></a>00578 <span class="comment">/* ------------------------------------------------------------------------ *</span><a name="l00579"></a>00579 <span class="comment"> * OCI_ResultsetExpandStrings</span><a name="l00580"></a>00580 <span class="comment"> * ------------------------------------------------------------------------ */</span><a name="l00581"></a>00581 <a name="l00582"></a>00582 <span class="keywordtype">boolean</span> OCI_ResultsetExpandStrings(<a class="code" href="struct_o_c_i___resultset.html" title="Collection of output columns from a select statement.">OCI_Resultset</a> *rs)<a name="l00583"></a>00583 {<a name="l00584"></a>00584     <span class="keywordtype">int</span> i, j;<a name="l00585"></a>00585 <a name="l00586"></a>00586     OCI_CHECK(rs == NULL, FALSE)<a name="l00587"></a>00587 <a name="l00588"></a>00588     for (i = 0; i &lt; rs-&gt;nb_defs; i++)<a name="l00589"></a>00589     {<a name="l00590"></a>00590         OCI_Define *def = &amp;rs-&gt;<a class="code" href="struct_o_c_i___resultset.html#ca691fad2f84ecfb8956f5e1649c0a53">defs</a>[i];<a name="l00591"></a>00591 <a name="l00592"></a>00592         <span class="keywordflow">if</span> (def-&gt;col.type == OCI_CDT_TEXT)<a name="l00593"></a>00593         {<a name="l00594"></a>00594             <span class="keywordflow">for</span> (j = (def-&gt;buf.count-1); j &gt;= 0; j--)<a name="l00595"></a>00595             {<a name="l00596"></a>00596                 OCI_ConvertString(((ub1*) def-&gt;buf.data) + (def-&gt;col.bufsize * j),<a name="l00597"></a>00597                                   def-&gt;col.bufsize / <span class="keyword">sizeof</span>(dtext),<a name="l00598"></a>00598                                   <span class="keyword">sizeof</span>(odtext), <span class="keyword">sizeof</span>(dtext));<a name="l00599"></a>00599             }<a name="l00600"></a>00600         }<a name="l00601"></a>00601     }<a name="l00602"></a>00602 <a name="l00603"></a>00603     <span class="keywordflow">return</span> TRUE;<a name="l00604"></a>00604 }<a name="l00605"></a>00605 <a name="l00606"></a>00606 <span class="preprocessor">#endif</span><a name="l00607"></a>00607 <span class="preprocessor"></span><a name="l00608"></a>00608 <span class="comment">/* ************************************************************************ *</span><a name="l00609"></a>00609 <span class="comment"> *                            PUBLIC FUNCTIONS</span><a name="l00610"></a>00610 <span class="comment"> * ************************************************************************ */</span><a name="l00611"></a>00611 <a name="l00612"></a>00612 <span class="comment">/* ------------------------------------------------------------------------ *</span><a name="l00613"></a>00613 <span class="comment"> * OCI_GetResultset</span><a name="l00614"></a>00614 <span class="comment"> * ------------------------------------------------------------------------ */</span><a name="l00615"></a>00615 <a name="l00616"></a><a class="code" href="group__g__fetch.html#gf2a9e28b66a9538ba0ffb62bffb87c16">00616</a> <a class="code" href="struct_o_c_i___resultset.html" title="Collection of output columns from a select statement.">OCI_Resultset</a> * OCI_API <a class="code" href="group__g__fetch.html#gf2a9e28b66a9538ba0ffb62bffb87c16" title="Retrieve the resultset handle from an executed statement.">OCI_GetResultset</a>(<a class="code" href="struct_o_c_i___statement.html" title="Oracle SQL or PL/SQL statement.">OCI_Statement</a> *stmt)<a name="l00617"></a>00617 {<a name="l00618"></a>00618     <a class="code" href="struct_o_c_i___resultset.html" title="Collection of output columns from a select statement.">OCI_Resultset</a> *rs = NULL;<a name="l00619"></a>00619     <span class="keywordtype">boolean</span> res       = TRUE;<a name="l00620"></a>00620 <a name="l00621"></a>00621     OCI_CHECK_PTR(OCI_IPC_STATEMENT, stmt, NULL);<a name="l00622"></a>00622 <a name="l00623"></a>00623     OCI_CHECK_STMT_STATUS(stmt, OCI_STMT_CLOSED, FALSE);<a name="l00624"></a>00624     OCI_CHECK_STMT_STATUS(stmt, OCI_STMT_PREPARED, FALSE);<a name="l00625"></a>00625 <a name="l00626"></a>00626     <span class="comment">/* if the sql statement does not return a result, we just return NULL and not </span><a name="l00627"></a>00627 <span class="comment">       throwing any exception */</span><a name="l00628"></a>00628 <a name="l00629"></a>00629     <span class="keywordflow">if</span> ((stmt-&gt;<a class="code" href="struct_o_c_i___statement.html#9cf69f367c58d7d808cdb799704f684c">type</a> != OCI_CST_SELECT) || (stmt-&gt;<a class="code" href="struct_o_c_i___statement.html#eb65445456183d9df21d1e54845074a8">nb_outbinds</a> == 0))<a name="l00630"></a>00630     {<a name="l00631"></a>00631         <span class="comment">/* if the resultset exists, let's use it */</span><a name="l00632"></a>00632 <a name="l00633"></a>00633         <span class="keywordflow">if</span> ((stmt-&gt;<a class="code" href="struct_o_c_i___statement.html#aa888e80d16c06da0bca96b6bca6826d">rsts</a> != NULL) &amp;&amp; (stmt-&gt;<a class="code" href="struct_o_c_i___statement.html#aa888e80d16c06da0bca96b6bca6826d">rsts</a>[0] != NULL))<a name="l00634"></a>00634         {<a name="l00635"></a>00635             rs = stmt-&gt;<a class="code" href="struct_o_c_i___statement.html#aa888e80d16c06da0bca96b6bca6826d">rsts</a>[0];<a name="l00636"></a>00636         }<a name="l00637"></a>00637 <a name="l00638"></a>00638         <span class="comment">/* allocate resultset for select statements */</span><a name="l00639"></a>00639 <a name="l00640"></a>00640         <span class="keywordflow">if</span> ((rs == NULL)  &amp;&amp; (stmt-&gt;<a class="code" href="struct_o_c_i___statement.html#9cf69f367c58d7d808cdb799704f684c">type</a> == OCI_CST_SELECT))<a name="l00641"></a>00641         {<a name="l00642"></a>00642             <span class="comment">/* allocate memory for one resultset handle */</span><a name="l00643"></a>00643 <a name="l00644"></a>00644             stmt-&gt;<a class="code" href="struct_o_c_i___statement.html#aa888e80d16c06da0bca96b6bca6826d">rsts</a> = (<a class="code" href="struct_o_c_i___resultset.html" title="Collection of output columns from a select statement.">OCI_Resultset</a> **) OCI_MemAlloc(OCI_IPC_RESULTSET_ARRAY, <a name="l00645"></a>00645                                                          <span class="keyword">sizeof</span>(*stmt-&gt;<a class="code" href="struct_o_c_i___statement.html#aa888e80d16c06da0bca96b6bca6826d">rsts</a>),<a name="l00646"></a>00646                                                          1, TRUE); <a name="l00647"></a>00647             <span class="keywordflow">if</span> (stmt-&gt;<a class="code" href="struct_o_c_i___statement.html#aa888e80d16c06da0bca96b6bca6826d">rsts</a> != NULL)<a name="l00648"></a>00648             {<a name="l00649"></a>00649                 stmt-&gt;<a class="code" href="struct_o_c_i___statement.html#b1f1266bcc92064c5d22da6bf2cd75a7">nb_rs</a>   = 1;<a name="l00650"></a>00650                 stmt-&gt;<a class="code" href="struct_o_c_i___statement.html#30b118cd610303e0765687a47bb7eb7c">cur_rs</a>  = 0;<a name="l00651"></a>00651                <a name="l00652"></a>00652                 <span class="comment">/* create resultset object */</span><a name="l00653"></a>00653 <a name="l00654"></a>00654                 rs = OCI_ResultsetCreate(stmt, stmt-&gt;<a class="code" href="struct_o_c_i___statement.html#626ed5e545180d0626b5d9fba1cacd4b">fetch_size</a>);<a name="l00655"></a>00655 <a name="l00656"></a>00656                 <span class="keywordflow">if</span> (rs != NULL)<a name="l00657"></a>00657                     stmt-&gt;<a class="code" href="struct_o_c_i___statement.html#aa888e80d16c06da0bca96b6bca6826d">rsts</a>[0] = rs;<a name="l00658"></a>00658                 <span class="keywordflow">else</span><a name="l00659"></a>00659                     res = FALSE;<a name="l00660"></a>00660             }<a name="l00661"></a>00661             <span class="keywordflow">else</span><a name="l00662"></a>00662                 res = FALSE;<a name="l00663"></a>00663         }<a name="l00664"></a>00664     }<a name="l00665"></a>00665 <a name="l00666"></a>00666     OCI_RESULT(res);<a name="l00667"></a>00667 <a name="l00668"></a>00668     <span class="keywordflow">return</span> rs;<a name="l00669"></a>00669 }<a name="l00670"></a>00670 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -