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

📄 statement_8c-source.html

📁 oci的源码,可以在任何平台上编译,相当方便实用
💻 HTML
📖 第 1 页 / 共 5 页
字号:
<a name="l00412"></a>00412     <span class="comment">/* allocate indicators array */</span><a name="l00413"></a>00413 <a name="l00414"></a>00414     <span class="keywordflow">if</span> (res == TRUE)<a name="l00415"></a>00415     {<a name="l00416"></a>00416         <span class="keywordflow">if</span> (bnd-&gt;<a class="code" href="struct_o_c_i___bind.html#84f5e5f6c4bc3a1118269bdc0acde91d">buf</a>.inds == NULL)<a name="l00417"></a>00417         {<a name="l00418"></a>00418             bnd-&gt;<a class="code" href="struct_o_c_i___bind.html#84f5e5f6c4bc3a1118269bdc0acde91d">buf</a>.inds = (<span class="keywordtype">void</span> *) OCI_MemAlloc(OCI_IPC_INDICATOR_ARRAY, <a name="l00419"></a>00419                                                   <span class="keyword">sizeof</span>(sb2), nbelem, TRUE);<a name="l00420"></a>00420         }<a name="l00421"></a>00421 <a name="l00422"></a>00422         res = (bnd-&gt;<a class="code" href="struct_o_c_i___bind.html#84f5e5f6c4bc3a1118269bdc0acde91d">buf</a>.inds != NULL);<a name="l00423"></a>00423     }<a name="l00424"></a>00424 <a name="l00425"></a>00425     <span class="comment">/* check need for PL/SQL table extra info */</span><a name="l00426"></a>00426 <a name="l00427"></a>00427     <span class="keywordflow">if</span> ((res == TRUE) &amp;&amp; (is_pltbl == TRUE))<a name="l00428"></a>00428     {<a name="l00429"></a>00429         bnd-&gt;<a class="code" href="struct_o_c_i___bind.html#af09a240136ed7af6a34a85644cd94b2">nbelem</a> = nbelem;<a name="l00430"></a>00430         pnbelem     = &amp;bnd-&gt;<a class="code" href="struct_o_c_i___bind.html#af09a240136ed7af6a34a85644cd94b2">nbelem</a>;<a name="l00431"></a>00431 <a name="l00432"></a>00432         <span class="comment">/* allocate array of returned codes */</span><a name="l00433"></a>00433 <a name="l00434"></a>00434         <span class="keywordflow">if</span> (res == TRUE)<a name="l00435"></a>00435         {<a name="l00436"></a>00436             <span class="keywordflow">if</span> (bnd-&gt;<a class="code" href="struct_o_c_i___bind.html#68fa7ff8c51c0193064e82f598541886">plrcds</a> == NULL)<a name="l00437"></a>00437             {<a name="l00438"></a>00438                 bnd-&gt;<a class="code" href="struct_o_c_i___bind.html#68fa7ff8c51c0193064e82f598541886">plrcds</a> = (ub2 *) OCI_MemAlloc(OCI_IPC_PLS_RCODE_ARRAY,<a name="l00439"></a>00439                                                    <span class="keyword">sizeof</span>(ub2), nbelem, TRUE);<a name="l00440"></a>00440             }<a name="l00441"></a>00441 <a name="l00442"></a>00442             res = (bnd-&gt;<a class="code" href="struct_o_c_i___bind.html#68fa7ff8c51c0193064e82f598541886">plrcds</a> != NULL);<a name="l00443"></a>00443         }<a name="l00444"></a>00444     }<a name="l00445"></a>00445 <a name="l00446"></a>00446     <span class="comment">/* for handle based datatypes, we need to allocate an array of handles for</span><a name="l00447"></a>00447 <span class="comment">       bind calls because OCILIB uses external arrays of OCILIB Objects */</span><a name="l00448"></a>00448 <a name="l00449"></a>00449     <span class="keywordflow">if</span> ((res == TRUE) &amp;&amp; (mode == OCI_BIND_INPUT))<a name="l00450"></a>00450     {<a name="l00451"></a>00451         <span class="keywordflow">if</span> (type != OCI_CDT_RAW      &amp;&amp;<a name="l00452"></a>00452             type != OCI_CDT_LONG     &amp;&amp;<a name="l00453"></a>00453             type != OCI_CDT_CURSOR   &amp;&amp;<a name="l00454"></a>00454 <a name="l00455"></a>00455 #ifndef OCI_CHECK_DATASTRINGS<a name="l00456"></a>00456 <a name="l00457"></a>00457             type != OCI_CDT_TEXT     &amp;&amp;<a name="l00458"></a>00458 <a name="l00459"></a>00459 #endif<a name="l00460"></a>00460             (type != OCI_CDT_NUMERIC || code == SQLT_VNU)<a name="l00461"></a>00461         )<a name="l00462"></a>00462         {<a name="l00463"></a>00463             bnd-&gt;<a class="code" href="struct_o_c_i___bind.html#ae6ec773f7c093c4431df9ca037e75f3">alloc</a> = TRUE;<a name="l00464"></a>00464 <a name="l00465"></a>00465             <span class="keywordflow">if</span> (bnd-&gt;<a class="code" href="struct_o_c_i___bind.html#84f5e5f6c4bc3a1118269bdc0acde91d">buf</a>.data == NULL)<a name="l00466"></a>00466             {<a name="l00467"></a>00467                 bnd-&gt;<a class="code" href="struct_o_c_i___bind.html#84f5e5f6c4bc3a1118269bdc0acde91d">buf</a>.data = (<span class="keywordtype">void</span> **) OCI_MemAlloc(OCI_IPC_BUFF_ARRAY, size, <a name="l00468"></a>00468                                                        nbelem, TRUE);<a name="l00469"></a>00469             }<a name="l00470"></a>00470 <a name="l00471"></a>00471             res = (bnd-&gt;<a class="code" href="struct_o_c_i___bind.html#84f5e5f6c4bc3a1118269bdc0acde91d">buf</a>.data != NULL);<a name="l00472"></a>00472         }<a name="l00473"></a>00473         <span class="keywordflow">else</span><a name="l00474"></a>00474             bnd-&gt;<a class="code" href="struct_o_c_i___bind.html#84f5e5f6c4bc3a1118269bdc0acde91d">buf</a>.data = (<span class="keywordtype">void</span> **) data;<a name="l00475"></a>00475     }<a name="l00476"></a>00476 <a name="l00477"></a>00477     <span class="comment">/* setup data length array */</span><a name="l00478"></a>00478 <a name="l00479"></a>00479     <span class="keywordflow">if</span> (res == TRUE &amp;&amp; ((is_pltbl == TRUE) || (type == OCI_CDT_RAW)))<a name="l00480"></a>00480     {<a name="l00481"></a>00481         <span class="keywordflow">if</span> (bnd-&gt;<a class="code" href="struct_o_c_i___bind.html#84f5e5f6c4bc3a1118269bdc0acde91d">buf</a>.lens == NULL)<a name="l00482"></a>00482         {<a name="l00483"></a>00483             bnd-&gt;<a class="code" href="struct_o_c_i___bind.html#84f5e5f6c4bc3a1118269bdc0acde91d">buf</a>.lens = (<span class="keywordtype">void</span> *) OCI_MemAlloc(OCI_IPC_LEN_ARRAY, <span class="keyword">sizeof</span>(ub2),<a name="l00484"></a>00484                                                   nbelem, TRUE);<a name="l00485"></a>00485         }<a name="l00486"></a>00486 <a name="l00487"></a>00487         res = (bnd-&gt;<a class="code" href="struct_o_c_i___bind.html#84f5e5f6c4bc3a1118269bdc0acde91d">buf</a>.lens != NULL);<a name="l00488"></a>00488 <a name="l00489"></a>00489        <span class="comment">/* initialize length array with buffer default size */</span><a name="l00490"></a>00490 <a name="l00491"></a>00491         <span class="keywordflow">if</span> (res == TRUE)<a name="l00492"></a>00492         {<a name="l00493"></a>00493             <span class="keywordflow">for</span> (i=0; i &lt; nbelem; i++)<a name="l00494"></a>00494             {<a name="l00495"></a>00495                 *(ub2*)(((ub1 *)bnd-&gt;<a class="code" href="struct_o_c_i___bind.html#84f5e5f6c4bc3a1118269bdc0acde91d">buf</a>.lens) + <span class="keyword">sizeof</span>(ub2) * i) = (ub2) size;<a name="l00496"></a>00496             }<a name="l00497"></a>00497         }<a name="l00498"></a>00498 <a name="l00499"></a>00499     }<a name="l00500"></a>00500 <a name="l00501"></a>00501     <span class="comment">/* initialize bind object */</span><a name="l00502"></a>00502 <a name="l00503"></a>00503     <span class="keywordflow">if</span> (res == TRUE)<a name="l00504"></a>00504     {<a name="l00505"></a>00505         <span class="comment">/* initialize bind attributes */</span><a name="l00506"></a>00506 <a name="l00507"></a>00507         bnd-&gt;<a class="code" href="struct_o_c_i___bind.html#e7dec278cfe66410bfa2214035f87218">stmt</a>      = stmt;<a name="l00508"></a>00508         bnd-&gt;<a class="code" href="struct_o_c_i___bind.html#7418e524b2f74d7ac8aced60ad51b5ab">input</a>     = (<span class="keywordtype">void</span> **) data;<a name="l00509"></a>00509         bnd-&gt;<a class="code" href="struct_o_c_i___bind.html#4892923281f05c1b53ea90d77f900f5f">type</a>      = type;<a name="l00510"></a>00510         bnd-&gt;<a class="code" href="struct_o_c_i___bind.html#fcbb3ea5c94af6f92f353d8cad5ece39">size</a>      = size;<a name="l00511"></a>00511         bnd-&gt;<a class="code" href="struct_o_c_i___bind.html#a7c3066a9503075a649ade3674bce071">code</a>      = (ub2) code;<a name="l00512"></a>00512         bnd-&gt;<a class="code" href="struct_o_c_i___bind.html#3f5dd93654e5d7a3f55d8cf74583b9c8">subtype</a>   = (ub1) subtype;<a name="l00513"></a>00513 <a name="l00514"></a>00514         <span class="keywordflow">if</span> (bnd-&gt;<a class="code" href="struct_o_c_i___bind.html#2df073f29af7df69965c5386886c1d03">name</a> == NULL)<a name="l00515"></a>00515         {<a name="l00516"></a>00516             bnd-&gt;<a class="code" href="struct_o_c_i___bind.html#2df073f29af7df69965c5386886c1d03">name</a> = mtsdup(name);<a name="l00517"></a>00517         }<a name="l00518"></a>00518 <a name="l00519"></a>00519         <span class="comment">/* initialize buffer */</span><a name="l00520"></a>00520 <a name="l00521"></a>00521         bnd-&gt;<a class="code" href="struct_o_c_i___bind.html#84f5e5f6c4bc3a1118269bdc0acde91d">buf</a>.count   = nbelem;<a name="l00522"></a>00522         bnd-&gt;<a class="code" href="struct_o_c_i___bind.html#84f5e5f6c4bc3a1118269bdc0acde91d">buf</a>.sizelen = <span class="keyword">sizeof</span>(ub2);<a name="l00523"></a>00523 <a name="l00524"></a>00524         <span class="comment">/* if we bind an OCI_Long or any output bind, we need to change the</span><a name="l00525"></a>00525 <span class="comment">           execution mode to provide data at execute time */</span><a name="l00526"></a>00526 <a name="l00527"></a>00527         <span class="keywordflow">if</span> (bnd-&gt;<a class="code" href="struct_o_c_i___bind.html#4892923281f05c1b53ea90d77f900f5f">type</a> == OCI_CDT_LONG)<a name="l00528"></a>00528         {<a name="l00529"></a>00529             stmt-&gt;<a class="code" href="struct_o_c_i___statement.html#f66fea62f75b943c334283cd346fb729">long_size</a> = size;<a name="l00530"></a>00530             exec_mode       = OCI_DATA_AT_EXEC;<a name="l00531"></a>00531         }<a name="l00532"></a>00532         <span class="keywordflow">else</span> <span class="keywordflow">if</span> (mode == OCI_BIND_OUTPUT)<a name="l00533"></a>00533         {<a name="l00534"></a>00534             exec_mode = OCI_DATA_AT_EXEC;<a name="l00535"></a>00535         }<a name="l00536"></a>00536     }<a name="l00537"></a>00537 <a name="l00538"></a>00538    <span class="comment">/* OCI binding */</span><a name="l00539"></a>00539 <a name="l00540"></a>00540     <span class="keywordflow">if</span> (res == TRUE)<a name="l00541"></a>00541     {<a name="l00542"></a>00542         <span class="keywordflow">if</span> (stmt-&gt;<a class="code" href="struct_o_c_i___statement.html#5824dd74344da1512bc07b20fcfc75e8">bind_mode</a> == OCI_BIND_BY_POS)<a name="l00543"></a>00543         {<a name="l00544"></a>00544             OCI_CALL1<a name="l00545"></a>00545             (<a name="l00546"></a>00546                 res, stmt-&gt;<a class="code" href="struct_o_c_i___statement.html#338ddf58debd7de6ab9355f1e75d78f6">con</a>, stmt,<a name="l00547"></a>00547 <a name="l00548"></a>00548                 OCIBindByPos(stmt-&gt;<a class="code" href="struct_o_c_i___statement.html#e526a309495dc7d8bcb747b2771de6b9">stmt</a>, (OCIBind **) &amp;bnd-&gt;<a class="code" href="struct_o_c_i___bind.html#84f5e5f6c4bc3a1118269bdc0acde91d">buf</a>.handle,<a name="l00549"></a>00549                              stmt-&gt;<a class="code" href="struct_o_c_i___statement.html#338ddf58debd7de6ab9355f1e75d78f6">con</a>-&gt;<a class="code" href="struct_o_c_i___connection.html#573a359867139990b1b0f50aa7a86175">err</a>, (ub4) index, (<span class="keywordtype">void</span> *) bnd-&gt;<a class="code" href="struct_o_c_i___bind.html#84f5e5f6c4bc3a1118269bdc0acde91d">buf</a>.data,<a name="l00550"></a>00550                              bnd-&gt;<a class="code" href="struct_o_c_i___bind.html#fcbb3ea5c94af6f92f353d8cad5ece39">size</a>, bnd-&gt;<a class="code" href="struct_o_c_i___bind.html#a7c3066a9503075a649ade3674bce071">code</a>, bnd-&gt;<a class="code" href="struct_o_c_i___bind.html#84f5e5f6c4bc3a1118269bdc0acde91d">buf</a>.inds,  bnd-&gt;<a class="code" href="struct_o_c_i___bind.html#84f5e5f6c4bc3a1118269bdc0acde91d">buf</a>.lens,<a name="l00551"></a>00551                              bnd-&gt;<a class="code" href="struct_o_c_i___bind.html#68fa7ff8c51c0193064e82f598541886">plrcds</a>, (ub4) (is_pltbl == TRUE ? nbelem : 0),<a name="l00552"></a>00552                              pnbelem, exec_mode)<a name="l00553"></a>00553             )

⌨️ 快捷键说明

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