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

📄 statement_8c-source.html

📁 ORACLE编程的好东西,纯C写的OCI封装.很好用,支持数据池.
💻 HTML
📖 第 1 页 / 共 5 页
字号:
<a name="l00457"></a>00457             <span class="keywordtype">void</span> * ostr = NULL;<a name="l00458"></a>00458             <span class="keywordtype">int</span> osize   = -1;<a name="l00459"></a>00459 <a name="l00460"></a>00460             ostr = OCI_GetInputMetaString(bnd-&gt;name, &amp;osize);<a name="l00461"></a>00461 <a name="l00462"></a>00462             OCI_CALL1<a name="l00463"></a>00463             (<a name="l00464"></a>00464                 res, stmt-&gt;<a class="code" href="struct_o_c_i___statement.html#338ddf58debd7de6ab9355f1e75d78f6">con</a>, stmt,<a name="l00465"></a>00465                 <a name="l00466"></a>00466                 OCIBindByName(stmt-&gt;<a class="code" href="struct_o_c_i___statement.html#e526a309495dc7d8bcb747b2771de6b9">stmt</a>, (OCIBind **) &amp;bnd-&gt;buf.handle,<a name="l00467"></a>00467                               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>, (OraText *) ostr, (sb4) osize, <a name="l00468"></a>00468                               (<span class="keywordtype">void</span> *) bnd-&gt;buf.data, bnd-&gt;size, bnd-&gt;code,<a name="l00469"></a>00469                               bnd-&gt;buf.inds, bnd-&gt;plsizes, bnd-&gt;plrcds, <a name="l00470"></a>00470                               (ub4) (is_pltbl == TRUE ? nbelem : 0),<a name="l00471"></a>00471                               pnbelem, exec_mode)<a name="l00472"></a>00472             )<a name="l00473"></a>00473             <a name="l00474"></a>00474             OCI_ReleaseMetaString(ostr);<a name="l00475"></a>00475         }<a name="l00476"></a>00476 <a name="l00477"></a>00477         if (code == SQLT_NTY)<a name="l00478"></a>00478         {                                          <a name="l00479"></a>00479             OCI_CALL1<a name="l00480"></a>00480             (<a name="l00481"></a>00481                 res, stmt-&gt;<a class="code" href="struct_o_c_i___statement.html#338ddf58debd7de6ab9355f1e75d78f6">con</a>, stmt,<a name="l00482"></a>00482                 <a name="l00483"></a>00483                 OCIBindObject((OCIBind *) bnd-&gt;buf.handle, 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>, <a name="l00484"></a>00484                               (OCIType *) extra, (<span class="keywordtype">void</span> **) bnd-&gt;buf.data,<a name="l00485"></a>00485                               (ub4 *) NULL, (<span class="keywordtype">void</span> **) NULL,<a name="l00486"></a>00486                               (ub4 *) bnd-&gt;buf.inds)<a name="l00487"></a>00487             )<a name="l00488"></a>00488         }<a name="l00489"></a>00489 <a name="l00490"></a>00490         <span class="keywordflow">if</span> (bnd-&gt;mode == OCI_BIND_OUTPUT)<a name="l00491"></a>00491         {<a name="l00492"></a>00492             <span class="comment">/* register output placeholder */</span><a name="l00493"></a>00493 <a name="l00494"></a>00494             OCI_CALL1<a name="l00495"></a>00495             (<a name="l00496"></a>00496                 res, stmt-&gt;<a class="code" href="struct_o_c_i___statement.html#338ddf58debd7de6ab9355f1e75d78f6">con</a>, stmt,<a name="l00497"></a>00497                               <a name="l00498"></a>00498                 OCIBindDynamic((OCIBind *) bnd-&gt;buf.handle, 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>,<a name="l00499"></a>00499                                (dvoid *) bnd, OCI_ProcInBind,<a name="l00500"></a>00500                                (dvoid *) bnd, OCI_ProcOutBind)<a name="l00501"></a>00501             )<a name="l00502"></a>00502         }<a name="l00503"></a>00503 <a name="l00504"></a>00504         <span class="comment">/* setup national charset from flag if needded */</span><a name="l00505"></a>00505 <a name="l00506"></a>00506         <span class="keywordflow">if</span> (<a name="l00507"></a>00507             (<a name="l00508"></a>00508                 (bnd-&gt;type    == OCI_CDT_LOB) &amp;&amp;<a name="l00509"></a>00509                 (bnd-&gt;subtype == OCI_NCLOB)<a name="l00510"></a>00510             )<a name="l00511"></a>00511 #ifdef OCI_USERDATA_UNICODE        <a name="l00512"></a>00512             || <a name="l00513"></a>00513             (<a name="l00514"></a>00514                 (bnd-&gt;type          == OCI_CDT_TEXT) &amp;&amp; <a name="l00515"></a>00515                 (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#a1557af9d91979e54d5420bd3e2a9b65">ver_maj</a> &gt;= OCI_9)        &amp;&amp;<a name="l00516"></a>00516                 (bnd-&gt;plsizes       == NULL)<a name="l00517"></a>00517             )<a name="l00518"></a>00518 #endif<a name="l00519"></a>00519            )<a name="l00520"></a>00520         {<a name="l00521"></a>00521             ub1 csfrm = SQLCS_NCHAR;<a name="l00522"></a>00522 <a name="l00523"></a>00523             OCI_CALL1<a name="l00524"></a>00524             (<a name="l00525"></a>00525                 res, stmt-&gt;<a class="code" href="struct_o_c_i___statement.html#338ddf58debd7de6ab9355f1e75d78f6">con</a>, stmt,<a name="l00526"></a>00526                               <a name="l00527"></a>00527                 OCIAttrSet((dvoid *) bnd-&gt;buf.handle, (ub4) OCI_HTYPE_BIND,<a name="l00528"></a>00528                            (dvoid *) &amp;csfrm, (ub4) <span class="keyword">sizeof</span>(csfrm),<a name="l00529"></a>00529                            (ub4) OCI_ATTR_CHARSET_FORM,  bnd-&gt;stmt-&gt;con-&gt;err)<a name="l00530"></a>00530             )<a name="l00531"></a>00531         }<a name="l00532"></a>00532 <a name="l00533"></a>00533 <span class="preprocessor">#ifdef OCI_CHARSET_MIXED</span><a name="l00534"></a>00534 <span class="preprocessor"></span><a name="l00535"></a>00535         <span class="comment">/* setup Unicode mode for user data in mixed builds */</span><a name="l00536"></a>00536         <a name="l00537"></a>00537         {<a name="l00538"></a>00538 <a name="l00539"></a>00539             ub2 csid = OCI_UTF16ID;<a name="l00540"></a>00540 <a name="l00541"></a>00541             OCI_CALL1<a name="l00542"></a>00542             (<a name="l00543"></a>00543                 res, stmt-&gt;<a class="code" href="struct_o_c_i___statement.html#338ddf58debd7de6ab9355f1e75d78f6">con</a>, stmt,<a name="l00544"></a>00544                               <a name="l00545"></a>00545                 OCIAttrSet((dvoid *) bnd-&gt;buf.handle, (ub4) OCI_HTYPE_BIND,<a name="l00546"></a>00546                            (dvoid *) &amp;csid,  (ub4) <span class="keyword">sizeof</span>(csid),<a name="l00547"></a>00547                            (ub4) OCI_ATTR_CHARSET_ID,  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>)<a name="l00548"></a>00548             )<a name="l00549"></a>00549         }<a name="l00550"></a>00550 <a name="l00551"></a>00551 <span class="preprocessor">#endif</span><a name="l00552"></a>00552 <span class="preprocessor"></span><a name="l00553"></a>00553     }<a name="l00554"></a>00554 <a name="l00555"></a>00555     <span class="comment">/* on success, add the bind handle to the bind array */</span><a name="l00556"></a>00556 <a name="l00557"></a>00557     <span class="keywordflow">if</span> (res == TRUE)<a name="l00558"></a>00558     {<a name="l00559"></a>00559         stmt-&gt;<a class="code" href="struct_o_c_i___statement.html#5979eb260642a37f1326551ddb6046a9">binds</a>[stmt-&gt;<a class="code" href="struct_o_c_i___statement.html#353c264bf3e693635702aaaea4d03626">nb_binds</a>++] = bnd;<a name="l00560"></a>00560 <a name="l00561"></a>00561         <span class="comment">/* this will allow resultset creation for statement with </span><a name="l00562"></a>00562 <span class="comment">           returning clause */</span><a name="l00563"></a>00563         <a name="l00564"></a>00564         <span class="keywordflow">if</span> (bnd-&gt;mode == OCI_BIND_OUTPUT)<a name="l00565"></a>00565             stmt-&gt;<a class="code" href="struct_o_c_i___statement.html#eb65445456183d9df21d1e54845074a8">nb_outbinds</a>++;<a name="l00566"></a>00566     }<a name="l00567"></a>00567 <a name="l00568"></a>00568     OCI_RESULT(res);<a name="l00569"></a>00569 <a name="l00570"></a>00570     <span class="keywordflow">return</span> res;<a name="l00571"></a>00571 }<a name="l00572"></a>00572 <a name="l00573"></a>00573 <span class="comment">/* ------------------------------------------------------------------------ *</span><a name="l00574"></a>00574 <span class="comment"> * OCI_FetchIntoUserVariables</span><a name="l00575"></a>00575 <span class="comment"> * ------------------------------------------------------------------------ */</span><a name="l00576"></a>00576 <a name="l00577"></a>00577 <span class="keywordtype">boolean</span> OCI_FetchIntoUserVariables(<a class="code" href="struct_o_c_i___statement.html" title="Oracle SQL or PL/SQL statement.">OCI_Statement</a> *stmt, va_list args)<a name="l00578"></a>00578 {<a name="l00579"></a>00579     <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="l00580"></a>00580     <span class="keywordtype">boolean</span> res = FALSE;<a name="l00581"></a>00581     <span class="keywordtype">int</span> i, n;<a name="l00582"></a>00582 <a name="l00583"></a>00583     <span class="comment">/* get resultset */</span><a name="l00584"></a>00584 <a name="l00585"></a>00585     rs  = <a class="code" href="group__g__fetch.html#gf2a9e28b66a9538ba0ffb62bffb87c16" title="Retrieve the resultset handle from an executed statement.">OCI_GetResultset</a>(stmt);<a name="l00586"></a>00586 <a name="l00587"></a>00587     <span class="comment">/* fetch data */</span><a name="l00588"></a>00588 <a name="l00589"></a>00589     <span class="keywordflow">if</span> (rs != NULL)<a name="l00590"></a>00590         res = <a class="code" href="group__g__fetch.html#g36ac26dcea78f6074421781e401f97ba" title="Fetch the next row of the resultset.">OCI_FetchNext</a>(rs);<a name="l00591"></a>00591 <a name="l00592"></a>00592     <span class="keywordflow">if</span> (res == TRUE)<a name="l00593"></a>00593     {<a name="l00594"></a>00594         <span class="comment">/* loop on column list for updating user given placeholders */</span><a name="l00595"></a>00595 <a name="l00596"></a>00596         <span class="keywordflow">for</span> (i = 1, n = <a class="code" href="group__g__fetch.html#g8935f9c6ff0d6f1d94c70afb3418a916" title="Return the number of columns in the resulset.">OCI_GetColumnCount</a>(rs); i &lt;= n &amp;&amp; res == TRUE; i++)<a name="l00597"></a>00597         {<a name="l00598"></a>00598             <a class="code" href="struct_o_c_i___column.html" title="Oracle SQL Column and Type member representation.">OCI_Column</a> *col = <a class="code" href="group__g__fetch.html#g7b64be082fc14ac73347b081cdb66de0" title="Return the column object handle at the given index in the resultset.">OCI_GetColumn</a>(rs, i);<a name="l00599"></a>00599 <a name="l00600"></a>00600             <span class="keywordtype">int</span> type = va_arg(args, <span class="keywordtype">int</span>);<a name="l00601"></a>00601 <a name="l00602"></a>00602             <span class="keywordflow">switch</span> (type)<a name="l00603"></a>00603             {<a name="l00604"></a>00604                 <span class="keywordflow">case</span> OCI_ARG_SHORT:<a name="l00605"></a>00605                 {<a name="l00606"></a>00606                     <span class="keywordtype">short</span> src, *dst;<a name="l00607"></a>00607 <a name="l00608"></a>00608                     src = <a class="code" href="group__g__fetch.html#geb764f2f4929df12d7293df195ebed8f" title="Return the current short value of the column at the given index in the resultset...">OCI_GetShort</a>(rs, i);<a name="l00609"></a>00609                     dst = va_arg(args, <span class="keywordtype">short</span> *);<a name="l00610"></a>00610                     <a name="l00611"></a>00611                     <span class="keywordflow">if</span> (dst != NULL)<a name="l00612"></a>00612                         *dst = src;<a name="l00613"></a>00613 

⌨️ 快捷键说明

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