📄 statement_8c-source.html
字号:
<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->name, &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-><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-><a class="code" href="struct_o_c_i___statement.html#e526a309495dc7d8bcb747b2771de6b9">stmt</a>, (OCIBind **) &bnd->buf.handle,<a name="l00467"></a>00467 stmt-><a class="code" href="struct_o_c_i___statement.html#338ddf58debd7de6ab9355f1e75d78f6">con</a>-><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->buf.data, bnd->size, bnd->code,<a name="l00469"></a>00469 bnd->buf.inds, bnd->plsizes, bnd->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-><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->buf.handle, stmt-><a class="code" href="struct_o_c_i___statement.html#338ddf58debd7de6ab9355f1e75d78f6">con</a>-><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->buf.data,<a name="l00485"></a>00485 (ub4 *) NULL, (<span class="keywordtype">void</span> **) NULL,<a name="l00486"></a>00486 (ub4 *) bnd->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->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-><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->buf.handle, stmt-><a class="code" href="struct_o_c_i___statement.html#338ddf58debd7de6ab9355f1e75d78f6">con</a>-><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->type == OCI_CDT_LOB) &&<a name="l00509"></a>00509 (bnd->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->type == OCI_CDT_TEXT) && <a name="l00515"></a>00515 (stmt-><a class="code" href="struct_o_c_i___statement.html#338ddf58debd7de6ab9355f1e75d78f6">con</a>-><a class="code" href="struct_o_c_i___connection.html#a1557af9d91979e54d5420bd3e2a9b65">ver_maj</a> >= OCI_9) &&<a name="l00516"></a>00516 (bnd->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-><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->buf.handle, (ub4) OCI_HTYPE_BIND,<a name="l00528"></a>00528 (dvoid *) &csfrm, (ub4) <span class="keyword">sizeof</span>(csfrm),<a name="l00529"></a>00529 (ub4) OCI_ATTR_CHARSET_FORM, bnd->stmt->con->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-><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->buf.handle, (ub4) OCI_HTYPE_BIND,<a name="l00546"></a>00546 (dvoid *) &csid, (ub4) <span class="keyword">sizeof</span>(csid),<a name="l00547"></a>00547 (ub4) OCI_ATTR_CHARSET_ID, stmt-><a class="code" href="struct_o_c_i___statement.html#338ddf58debd7de6ab9355f1e75d78f6">con</a>-><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-><a class="code" href="struct_o_c_i___statement.html#5979eb260642a37f1326551ddb6046a9">binds</a>[stmt-><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->mode == OCI_BIND_OUTPUT)<a name="l00565"></a>00565 stmt-><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 <= n && 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 + -