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

📄 dirpath_8c-source.html

📁 oci的源码,可以在任何平台上编译,相当方便实用
💻 HTML
📖 第 1 页 / 共 5 页
字号:
<a name="l00594"></a>00594 <a name="l00595"></a>00595             <span class="comment">/* data flags */</span><a name="l00596"></a>00596 <a name="l00597"></a>00597             col-&gt;flags = (ub1 *) OCI_MemAlloc(OCI_IPC_BUFF_ARRAY, <span class="keyword">sizeof</span>(ub1),<a name="l00598"></a>00598                                               dp-&gt;<a class="code" href="struct_o_c_i___dir_path.html#92069eb0d3771d051e6b87b541e34b59">nb_cur</a>, TRUE);<a name="l00599"></a>00599 <a name="l00600"></a>00600             <span class="keywordflow">if</span> (col-&gt;flags == NULL)<a name="l00601"></a>00601             {<a name="l00602"></a>00602                 res = FALSE;<a name="l00603"></a>00603                 <span class="keywordflow">break</span>;<a name="l00604"></a>00604             }<a name="l00605"></a>00605         }<a name="l00606"></a>00606     }<a name="l00607"></a>00607 <a name="l00608"></a>00608     <span class="keywordflow">if</span> (res == TRUE)<a name="l00609"></a>00609         dp-&gt;<a class="code" href="struct_o_c_i___dir_path.html#87321b559b61441b55c192cc9b2f835b">status</a> = OCI_DPS_PREPARED;<a name="l00610"></a>00610 <a name="l00611"></a>00611     OCI_RESULT(res);<a name="l00612"></a>00612 <a name="l00613"></a>00613     <span class="keywordflow">return</span> res;<a name="l00614"></a>00614 }<a name="l00615"></a>00615 <a name="l00616"></a>00616 <span class="comment">/* ------------------------------------------------------------------------ *</span><a name="l00617"></a>00617 <span class="comment"> * OCI_DirPathSetEntry</span><a name="l00618"></a>00618 <span class="comment"> * ------------------------------------------------------------------------ */</span><a name="l00619"></a>00619 <a name="l00620"></a>00620 <span class="keywordtype">boolean</span> OCI_API <a class="code" href="group__g__dirpath.html#gaadd5e79891c24d0f9c99ed96e5fe608" title="Set the value of the given row/column array entry.">OCI_DirPathSetEntry</a>(<a class="code" href="struct_o_c_i___dir_path.html" title="OCILIB encapsulation of OCI Direct Path handle.">OCI_DirPath</a> *dp, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> row,<a name="l00621"></a>00621                                     <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> index, <span class="keywordtype">void</span> *value,<a name="l00622"></a>00622                                     <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> size,  <span class="keywordtype">boolean</span> complete)<a name="l00623"></a>00623 {<a name="l00624"></a>00624     <span class="keywordtype">boolean</span> res = TRUE;<a name="l00625"></a>00625     OCI_DirPathColumn *dpcol = NULL;<a name="l00626"></a>00626     <a class="code" href="struct_o_c_i___column.html" title="Oracle SQL Column and Type member representation.">OCI_Column</a> *col = NULL;<a name="l00627"></a>00627 <a name="l00628"></a>00628     ub1 *data;<a name="l00629"></a>00629     ub1 flag;<a name="l00630"></a>00630 <a name="l00631"></a>00631     OCI_CHECK_PTR(OCI_IPC_DIRPATH, dp, FALSE);<a name="l00632"></a>00632 <a name="l00633"></a>00633     OCI_CHECK_DIRPATH_STATUS(dp, OCI_DPS_PREPARED, FALSE);<a name="l00634"></a>00634     OCI_CHECK_BOUND(dp-&gt;<a class="code" href="struct_o_c_i___dir_path.html#52410868a337ad04434b1e11859a471b">con</a>, index, 1, dp-&gt;<a class="code" href="struct_o_c_i___dir_path.html#15978bab1953802769c833b776a58bac">nb_cols</a>, FALSE);<a name="l00635"></a>00635     OCI_CHECK_BOUND(dp-&gt;<a class="code" href="struct_o_c_i___dir_path.html#52410868a337ad04434b1e11859a471b">con</a>, row, 1, dp-&gt;<a class="code" href="struct_o_c_i___dir_path.html#92069eb0d3771d051e6b87b541e34b59">nb_cur</a>, FALSE);<a name="l00636"></a>00636 <a name="l00637"></a>00637     dpcol = &amp;dp-&gt;<a class="code" href="struct_o_c_i___dir_path.html#da8657a28338656329ec2d46e51370d6">cols</a>[index-1];<a name="l00638"></a>00638     col   = &amp;dp-&gt;<a class="code" href="struct_o_c_i___dir_path.html#6921631a0280d2da229139fa61625a81">typinf</a>-&gt;<a class="code" href="struct_o_c_i___type_info.html#30783a0a4a5d15db8f8bfe90250f18a7">cols</a>[dpcol-&gt;index];<a name="l00639"></a>00639 <a name="l00640"></a>00640     <span class="comment">/* check size */</span><a name="l00641"></a>00641 <a name="l00642"></a>00642     <span class="keywordflow">if</span> (size &gt; dpcol-&gt;maxsize)<a name="l00643"></a>00643         size = (<span class="keywordtype">unsigned</span> int) dpcol-&gt;maxsize;<a name="l00644"></a>00644 <a name="l00645"></a>00645     <span class="comment">/* setup column flag */</span><a name="l00646"></a>00646 <a name="l00647"></a>00647     if (value == NULL)<a name="l00648"></a>00648     {<a name="l00649"></a>00649         flag = OCI_DIRPATH_COL_NULL;<a name="l00650"></a>00650     }<a name="l00651"></a>00651     <span class="keywordflow">else</span> <span class="keywordflow">if</span> (complete == TRUE)<a name="l00652"></a>00652     {<a name="l00653"></a>00653         flag = OCI_DIRPATH_COL_COMPLETE;<a name="l00654"></a>00654     }<a name="l00655"></a>00655     <span class="keywordflow">else</span><a name="l00656"></a>00656     {<a name="l00657"></a>00657         flag = OCI_DIRPATH_COL_PARTIAL;<a name="l00658"></a>00658     }<a name="l00659"></a>00659 <a name="l00660"></a>00660     <span class="comment">/* for character based column, parameter size was the number of characters */</span><a name="l00661"></a>00661 <a name="l00662"></a>00662     <span class="keywordflow">if</span> (dpcol-&gt;sqlcode == SQLT_CHR)<a name="l00663"></a>00663     {<a name="l00664"></a>00664        size *= <span class="keyword">sizeof</span>(dtext);<a name="l00665"></a>00665     }<a name="l00666"></a>00666 <a name="l00667"></a>00667     <span class="comment">/* get internal data cell */</span><a name="l00668"></a>00668 <a name="l00669"></a>00669     data = ((ub1 *) dpcol-&gt;data) + ((row-1) * dpcol-&gt;bufsize);<a name="l00670"></a>00670 <a name="l00671"></a>00671 <span class="preprocessor">#if defined(OCI_CHECK_DATASTRINGS)</span><a name="l00672"></a>00672 <span class="preprocessor"></span><a name="l00673"></a>00673     <span class="comment">/* we weed to pack the buffer if wchar_t is 4 bytes */</span><a name="l00674"></a>00674 <a name="l00675"></a>00675     <span class="keywordflow">if</span> (dpcol-&gt;type == OCI_DDT_TEXT)<a name="l00676"></a>00676     {<a name="l00677"></a>00677         <span class="keywordtype">int</span> osize = -1;<a name="l00678"></a>00678 <a name="l00679"></a>00679         OCI_GetOutputString(value, data, &amp;size, <span class="keyword">sizeof</span>(dtext), <span class="keyword">sizeof</span>(odtext));<a name="l00680"></a>00680     }<a name="l00681"></a>00681     <span class="keywordflow">else</span><a name="l00682"></a>00682 <span class="preprocessor">#endif</span><a name="l00683"></a>00683 <span class="preprocessor"></span><a name="l00684"></a>00684 <span class="preprocessor">#if defined(OCI_USERDATA_UNICODE)</span><a name="l00685"></a>00685 <span class="preprocessor"></span><a name="l00686"></a>00686     <span class="comment">/* input Unicode numeric values causes oracle conversion error.</span><a name="l00687"></a>00687 <span class="comment">       so, let's convert them to ansi */</span><a name="l00688"></a>00688 <a name="l00689"></a>00689     <span class="keywordflow">if</span> (dpcol-&gt;type == OCI_DDT_OTHERS)<a name="l00690"></a>00690     {<a name="l00691"></a>00691         size = (int) wcstombs((<span class="keywordtype">char</span> *) data, value, dpcol-&gt;bufsize - 1);<a name="l00692"></a>00692     }<a name="l00693"></a>00693     <span class="keywordflow">else</span><a name="l00694"></a>00694 <span class="preprocessor">#endif</span><a name="l00695"></a>00695 <span class="preprocessor"></span><a name="l00696"></a>00696     <span class="comment">/* if a format was provided for a numeric column, we convert the input</span><a name="l00697"></a>00697 <span class="comment">       buffer to a OCINumber */</span><a name="l00698"></a>00698 <a name="l00699"></a>00699     <span class="keywordflow">if</span> (dpcol-&gt;type == OCI_DDT_NUMBER)<a name="l00700"></a>00700     {<a name="l00701"></a>00701         OCINumber *num = (OCINumber *) data;<a name="l00702"></a>00702 <a name="l00703"></a>00703         res  = OCI_NumberConvertStr(dp-&gt;<a class="code" href="struct_o_c_i___dir_path.html#52410868a337ad04434b1e11859a471b">con</a>, num, (dtext *) value, size,<a name="l00704"></a>00704                                     dpcol-&gt;format, dpcol-&gt;format_size);<a name="l00705"></a>00705 <a name="l00706"></a>00706         <span class="keywordflow">if</span> (res == TRUE)<a name="l00707"></a>00707         {<a name="l00708"></a>00708             size = (<span class="keywordtype">unsigned</span> int) num-&gt;OCINumberPart[0];<a name="l00709"></a>00709         }<a name="l00710"></a>00710     }<a name="l00711"></a>00711     <span class="keywordflow">else</span><a name="l00712"></a>00712     {<a name="l00713"></a>00713 <a name="l00714"></a>00714 <span class="preprocessor">#if defined(OCI_CHARSET_MIXED)</span><a name="l00715"></a>00715 <span class="preprocessor"></span><a name="l00716"></a>00716         <span class="comment">/* with mixed charset builds, OCIDirPrepare() causes a segfault if the</span><a name="l00717"></a>00717 <span class="comment">           attribute OCI_ATTR_CHARSET_ID has been set with OCI_UTF16.</span><a name="l00718"></a>00718 <span class="comment">           In the OCILIB direct path implementation, the code is the same for</span><a name="l00719"></a>00719 <span class="comment">           Unicode and mixed charset. This only difference is the</span><a name="l00720"></a>00720 <span class="comment">           environment mode set of UTF16...</span><a name="l00721"></a>00721 <span class="comment">           So let's convert the data back to ANSI until Oracle corrects this bug */</span><a name="l00722"></a>00722 <a name="l00723"></a>00723         <span class="keywordflow">if</span> (dpcol-&gt;type == OCI_DDT_TEXT)<a name="l00724"></a>00724         {<a name="l00725"></a>00725             size = (int) wcstombs((<span class="keywordtype">char</span> *) data, value, dpcol-&gt;bufsize - 1);<a name="l00726"></a>00726         }<a name="l00727"></a>00727         <span class="keywordflow">else</span><a name="l00728"></a>00728 <span class="preprocessor">#endif</span><a name="l00729"></a>00729 <span class="preprocessor"></span>        {<a name="l00730"></a>00730             memcpy(data, value, size);<a name="l00731"></a>00731         }<a name="l00732"></a>00732 <a name="l00733"></a>00733     }<a name="l00734"></a>00734 <a name="l00735"></a>00735     dpcol-&gt;lens[row-1]  = size;<a name="l00736"></a>00736     dpcol-&gt;flags[row-1] = flag;<a name="l00737"></a>00737 <a name="l00738"></a>00738     OCI_RESULT(res);<a name="l00739"></a>00739 <a name="l00740"></a>00740     <span class="keywordflow">return</span> res;<a name="l00741"></a>00741 }<a name="l00742"></a>00742 <a name="l00743"></a>00743 <span class="comment">/* ------------------------------------------------------------------------ *</span><a name="l00744"></a>00744

⌨️ 快捷键说明

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