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

📄 resultset_8c-source.html

📁 oci的源码,可以在任何平台上编译,相当方便实用
💻 HTML
📖 第 1 页 / 共 5 页
字号:
<a name="l00530"></a>00530             }<a name="l00531"></a>00531             <span class="keywordflow">else</span><a name="l00532"></a>00532             {<a name="l00533"></a>00533                 offset_save = offset;<a name="l00534"></a>00534                 offset      = offset - rs-&gt;<a class="code" href="struct_o_c_i___resultset.html#1fb814eb9b03b65bd84d2e7551e29a28">row_fetched</a> + rs-&gt;<a class="code" href="struct_o_c_i___resultset.html#540ba8a96856cdbc89885745e7c6c72f">row_cur</a>;<a name="l00535"></a>00535                 rs-&gt;<a class="code" href="struct_o_c_i___resultset.html#540ba8a96856cdbc89885745e7c6c72f">row_cur</a> = 1;<a name="l00536"></a>00536 <a name="l00537"></a>00537                 res = OCI_FetchData(rs, mode, offset, err);<a name="l00538"></a>00538 <a name="l00539"></a>00539                 <span class="keywordflow">if</span> (res == TRUE)<a name="l00540"></a>00540                     rs-&gt;<a class="code" href="struct_o_c_i___resultset.html#c15097d127ce4369796be68769a91d14">row_abs</a> += offset_save;<a name="l00541"></a>00541             }<a name="l00542"></a>00542 <a name="l00543"></a>00543             <span class="keywordflow">break</span>;<a name="l00544"></a>00544        }<a name="l00545"></a>00545         <span class="keywordflow">case</span> OCI_SFD_ABSOLUTE:<a name="l00546"></a>00546         {<a name="l00547"></a>00547             <span class="keywordflow">if</span> (offset == 0)<a name="l00548"></a>00548             {<a name="l00549"></a>00549                 res = FALSE;<a name="l00550"></a>00550             }<a name="l00551"></a>00551             <span class="keywordflow">else</span><a name="l00552"></a>00552             {<a name="l00553"></a>00553                 rs-&gt;<a class="code" href="struct_o_c_i___resultset.html#c15097d127ce4369796be68769a91d14">row_abs</a>   = 1;<a name="l00554"></a>00554                 rs-&gt;<a class="code" href="struct_o_c_i___resultset.html#540ba8a96856cdbc89885745e7c6c72f">row_cur</a>   = 1;<a name="l00555"></a>00555 <a name="l00556"></a>00556                 res = OCI_FetchData(rs, mode, offset, err);<a name="l00557"></a>00557 <a name="l00558"></a>00558                 <span class="keywordflow">if</span> (res == TRUE)<a name="l00559"></a>00559                 {<a name="l00560"></a>00560                     rs-&gt;<a class="code" href="struct_o_c_i___resultset.html#c15097d127ce4369796be68769a91d14">row_abs</a> = offset;<a name="l00561"></a>00561 <a name="l00562"></a>00562                     rs-&gt;<a class="code" href="struct_o_c_i___resultset.html#356238d1be7f437365b64f38af66305c">bof</a>       = FALSE;<a name="l00563"></a>00563                     rs-&gt;<a class="code" href="struct_o_c_i___resultset.html#3a4dd67805dca28105e9c9c32cc893fe">eof</a>       = FALSE;<a name="l00564"></a>00564                 }<a name="l00565"></a>00565             }<a name="l00566"></a>00566 <a name="l00567"></a>00567             <span class="keywordflow">break</span>;<a name="l00568"></a>00568         }<a name="l00569"></a>00569         <span class="keywordflow">default</span>:<a name="l00570"></a>00570         {<a name="l00571"></a>00571             res = FALSE;<a name="l00572"></a>00572         }<a name="l00573"></a>00573     }<a name="l00574"></a>00574 <a name="l00575"></a>00575     <span class="keywordflow">return</span> res;<a name="l00576"></a>00576 }<a name="l00577"></a>00577 <a name="l00578"></a>00578 <span class="preprocessor">#ifdef OCI_CHECK_DATASTRINGS</span><a name="l00579"></a>00579 <span class="preprocessor"></span><a name="l00580"></a>00580 <span class="comment">/* ------------------------------------------------------------------------ *</span><a name="l00581"></a>00581 <span class="comment"> * OCI_ResultsetExpandStrings</span><a name="l00582"></a>00582 <span class="comment"> * ------------------------------------------------------------------------ */</span><a name="l00583"></a>00583 <a name="l00584"></a>00584 <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="l00585"></a>00585 {<a name="l00586"></a>00586     ub4 i;<a name="l00587"></a>00587     <span class="keywordtype">int</span> j;<a name="l00588"></a>00588 <a name="l00589"></a>00589     OCI_CHECK(rs == NULL, FALSE)<a name="l00590"></a>00590 <a name="l00591"></a>00591     for (i = 0; i &lt; rs-&gt;nb_defs; i++)<a name="l00592"></a>00592     {<a name="l00593"></a>00593         OCI_Define *def = &amp;rs-&gt;<a class="code" href="struct_o_c_i___resultset.html#ca691fad2f84ecfb8956f5e1649c0a53">defs</a>[i];<a name="l00594"></a>00594 <a name="l00595"></a>00595         <span class="keywordflow">if</span> (def-&gt;col.type == OCI_CDT_TEXT)<a name="l00596"></a>00596         {<a name="l00597"></a>00597             <span class="keywordflow">for</span> (j = (<span class="keywordtype">int</span>) (def-&gt;buf.count-1); j &gt;= 0; j--)<a name="l00598"></a>00598             {<a name="l00599"></a>00599                 OCI_ConvertString(((ub1*) def-&gt;buf.data) + (def-&gt;col.bufsize * j),<a name="l00600"></a>00600                                   def-&gt;col.bufsize / <span class="keyword">sizeof</span>(dtext), <span class="keyword">sizeof</span>(odtext),<a name="l00601"></a>00601                                   <span class="keyword">sizeof</span>(dtext));<a name="l00602"></a>00602             }<a name="l00603"></a>00603         }<a name="l00604"></a>00604     }<a name="l00605"></a>00605 <a name="l00606"></a>00606     <span class="keywordflow">return</span> TRUE;<a name="l00607"></a>00607 }<a name="l00608"></a>00608 <a name="l00609"></a>00609 <span class="preprocessor">#endif</span><a name="l00610"></a>00610 <span class="preprocessor"></span><a name="l00611"></a>00611 <span class="comment">/* ************************************************************************ *</span><a name="l00612"></a>00612 <span class="comment"> *                            PUBLIC FUNCTIONS</span><a name="l00613"></a>00613 <span class="comment"> * ************************************************************************ */</span><a name="l00614"></a>00614 <a name="l00615"></a>00615 <span class="comment">/* ------------------------------------------------------------------------ *</span><a name="l00616"></a>00616 <span class="comment"> * OCI_GetResultset</span><a name="l00617"></a>00617 <span class="comment"> * ------------------------------------------------------------------------ */</span><a name="l00618"></a>00618 <a name="l00619"></a><a class="code" href="group__g__fetch.html#gf2a9e28b66a9538ba0ffb62bffb87c16">00619</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="l00620"></a>00620 {<a name="l00621"></a>00621     <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="l00622"></a>00622     <span class="keywordtype">boolean</span> res       = TRUE;<a name="l00623"></a>00623 <a name="l00624"></a>00624     OCI_CHECK_PTR(OCI_IPC_STATEMENT, stmt, NULL);<a name="l00625"></a>00625 <a name="l00626"></a>00626     OCI_CHECK_STMT_STATUS(stmt, OCI_STMT_CLOSED, FALSE);<a name="l00627"></a>00627     OCI_CHECK_STMT_STATUS(stmt, OCI_STMT_PREPARED, FALSE);<a name="l00628"></a>00628 <a name="l00629"></a>00629     <span class="comment">/* if the sql statement does not return a result, we just return NULL and not</span><a name="l00630"></a>00630 <span class="comment">       throwing any exception */</span><a name="l00631"></a>00631 <a name="l00632"></a>00632     <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#13605ddb96fc31bc8408c38880ec8447">nb_rbinds</a> == 0))<a name="l00633"></a>00633     {<a name="l00634"></a>00634         <span class="comment">/* if the resultset exists, let's use it */</span><a name="l00635"></a>00635 <a name="l00636"></a>00636         <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="l00637"></a>00637         {<a name="l00638"></a>00638             rs = stmt-&gt;<a class="code" href="struct_o_c_i___statement.html#aa888e80d16c06da0bca96b6bca6826d">rsts</a>[0];<a name="l00639"></a>00639         }<a name="l00640"></a>00640 <a name="l00641"></a>00641         <span class="comment">/* allocate resultset for select statements */</span><a name="l00642"></a>00642 <a name="l00643"></a>00643         <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="l00644"></a>00644         {<a name="l00645"></a>00645             <span class="comment">/* allocate memory for one resultset handle */</span><a name="l00646"></a>00646 <a name="l00647"></a>00647             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="l00648"></a>00648                                                          <span class="keyword">sizeof</span>(*stmt-&gt;<a class="code" href="struct_o_c_i___statement.html#aa888e80d16c06da0bca96b6bca6826d">rsts</a>),<a name="l00649"></a>00649                                                          1, TRUE);<a name="l00650"></a>00650             <span class="keywordflow">if</span> (stmt-&gt;<a class="code" href="struct_o_c_i___statement.html#aa888e80d16c06da0bca96b6bca6826d">rsts</a> != NULL)<a name="l00651"></a>00651             {<a name="l00652"></a>00652                 stmt-&gt;<a class="code" href="struct_o_c_i___statement.html#b1f1266bcc92064c5d22da6bf2cd75a7">nb_rs</a>   = 1;<a name="l00653"></a>00653                 stmt-&gt;<a class="code" href="struct_o_c_i___statement.html#30b118cd610303e0765687a47bb7eb7c">cur_rs</a>  = 0;<a name="l00654"></a>00654 <a name="l00655"></a>00655                 <span class="comment">/* create resultset object */</span><a name="l00656"></a>00656 <a name="l00657"></a>00657                 rs = OCI_ResultsetCreate(stmt, stmt-&gt;<a class="code" href="struct_o_c_i___statement.html#626ed5e545180d0626b5d9fba1cacd4b">fetch_size</a>);<a name="l00658"></a>00658 <a name="l00659"></a>00659                 <span class="keywordflow">if</span> (rs != NULL)<a name="l00660"></a>00660                     stmt-&gt;<a class="code" href="struct_o_c_i___statement.html#aa888e80d16c06da0bca96b6bca6826d">rsts</a>[0] = rs;<a name="l00661"></a>00661                 <span class="keywordflow">else</sp

⌨️ 快捷键说明

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