📄 dirpath_8c-source.html
字号:
<a name="l00442"></a>00442 <a name="l00443"></a>00443 <span class="keywordflow">if</span> (col-><a class="code" href="struct_o_c_i___column.html#414942032092efb47ddf2f905eece02c">scale</a> != 0)<a name="l00444"></a>00444 {<a name="l00445"></a>00445 OCI_CALL2<a name="l00446"></a>00446 (<a name="l00447"></a>00447 res, dp-><a class="code" href="struct_o_c_i___dir_path.html#52410868a337ad04434b1e11859a471b">con</a>,<a name="l00448"></a>00448 <a name="l00449"></a>00449 OCIAttrSet((dvoid *) hattr, (ub4) OCI_DTYPE_PARAM,<a name="l00450"></a>00450 (dvoid *) &col-><a class="code" href="struct_o_c_i___column.html#414942032092efb47ddf2f905eece02c">scale</a>, <span class="keyword">sizeof</span>(col-><a class="code" href="struct_o_c_i___column.html#414942032092efb47ddf2f905eece02c">scale</a>),<a name="l00451"></a>00451 (ub4) OCI_ATTR_SCALE, dp-><a class="code" href="struct_o_c_i___dir_path.html#52410868a337ad04434b1e11859a471b">con</a>-><a class="code" href="struct_o_c_i___connection.html#573a359867139990b1b0f50aa7a86175">err</a>)<a name="l00452"></a>00452 )<a name="l00453"></a>00453 }<a name="l00454"></a>00454 <a name="l00455"></a>00455 <span class="comment">/* set column date/time format attribute */</span><a name="l00456"></a>00456 <a name="l00457"></a>00457 <span class="keywordflow">if</span> ((res == TRUE) && (dpcol->type != OCI_DDT_NUMBER) &&<a name="l00458"></a>00458 (dpcol->format != NULL) && (dpcol->format[0] != 0))<a name="l00459"></a>00459 {<a name="l00460"></a>00460 osize = -1;<a name="l00461"></a>00461 ostr = OCI_GetInputMetaString(dpcol->format, &osize);<a name="l00462"></a>00462 <a name="l00463"></a>00463 OCI_CALL2<a name="l00464"></a>00464 (<a name="l00465"></a>00465 res, dp-><a class="code" href="struct_o_c_i___dir_path.html#52410868a337ad04434b1e11859a471b">con</a>,<a name="l00466"></a>00466 <a name="l00467"></a>00467 OCIAttrSet((dvoid *) hattr, (ub4) OCI_DTYPE_PARAM,<a name="l00468"></a>00468 (dvoid *) ostr, (ub4) osize,<a name="l00469"></a>00469 (ub4) OCI_ATTR_DATEFORMAT, dp-><a class="code" href="struct_o_c_i___dir_path.html#52410868a337ad04434b1e11859a471b">con</a>-><a class="code" href="struct_o_c_i___connection.html#573a359867139990b1b0f50aa7a86175">err</a>)<a name="l00470"></a>00470 )<a name="l00471"></a>00471 <a name="l00472"></a>00472 OCI_ReleaseMetaString(ostr);<a name="l00473"></a>00473 }<a name="l00474"></a>00474 <a name="l00475"></a>00475 <span class="preprocessor"> #ifdef OCI_CHARSET_UNICODE</span><a name="l00476"></a>00476 <span class="preprocessor"></span><a name="l00477"></a>00477 <span class="comment">/* setup Unicode mode for Unicode user data */</span><a name="l00478"></a>00478 <a name="l00479"></a>00479 <span class="keywordflow">if</span> (dpcol->type == OCI_DDT_TEXT)<a name="l00480"></a>00480 {<a name="l00481"></a>00481 ub2 csid = OCI_UTF16ID;<a name="l00482"></a>00482 <a name="l00483"></a>00483 OCI_CALL2<a name="l00484"></a>00484 (<a name="l00485"></a>00485 res, dp-><a class="code" href="struct_o_c_i___dir_path.html#52410868a337ad04434b1e11859a471b">con</a>,<a name="l00486"></a>00486 <a name="l00487"></a>00487 OCIAttrSet((dvoid *) hattr, (ub4) OCI_DTYPE_PARAM,<a name="l00488"></a>00488 (dvoid *) &csid, (ub4) <span class="keyword">sizeof</span>(csid),<a name="l00489"></a>00489 (ub4) OCI_ATTR_CHARSET_ID, dp-><a class="code" href="struct_o_c_i___dir_path.html#52410868a337ad04434b1e11859a471b">con</a>-><a class="code" href="struct_o_c_i___connection.html#573a359867139990b1b0f50aa7a86175">err</a>)<a name="l00490"></a>00490 )<a name="l00491"></a>00491 }<a name="l00492"></a>00492 <a name="l00493"></a>00493 <span class="preprocessor"> #endif</span><a name="l00494"></a>00494 <span class="preprocessor"></span><a name="l00495"></a>00495 <span class="comment">/* free param handle */</span><a name="l00496"></a>00496 <a name="l00497"></a>00497 OCIDescriptorFree(hattr, OCI_DTYPE_PARAM);<a name="l00498"></a>00498 }<a name="l00499"></a>00499 <a name="l00500"></a>00500 <a name="l00501"></a>00501 OCI_RESULT(res);<a name="l00502"></a>00502 <a name="l00503"></a>00503 <span class="keywordflow">return</span> res;<a name="l00504"></a>00504 }<a name="l00505"></a>00505 <a name="l00506"></a>00506 <span class="comment">/* ------------------------------------------------------------------------ *</span><a name="l00507"></a>00507 <span class="comment"> * OCI_DirPathPrepare</span><a name="l00508"></a>00508 <span class="comment"> * ------------------------------------------------------------------------ */</span><a name="l00509"></a>00509 <a name="l00510"></a><a class="code" href="group__g__dirpath.html#g31aae5239710847d43b90166fedf0419">00510</a> <span class="keywordtype">boolean</span> OCI_API <a class="code" href="group__g__dirpath.html#g31aae5239710847d43b90166fedf0419" title="Prepares the OCI direct path load interface before any rows can be converted or loaded...">OCI_DirPathPrepare</a>(<a class="code" href="struct_o_c_i___dir_path.html" title="OCILIB encapsulation of OCI Direct Path handle.">OCI_DirPath</a> *dp)<a name="l00511"></a>00511 {<a name="l00512"></a>00512 <span class="keywordtype">boolean</span> res = TRUE;<a name="l00513"></a>00513 ub4 i;<a name="l00514"></a>00514 <a name="l00515"></a>00515 OCI_CHECK_PTR(OCI_IPC_DIRPATH, dp, FALSE);<a name="l00516"></a>00516 OCI_CHECK_DIRPATH_STATUS(dp, OCI_DPS_NOT_PREPARED, FALSE);<a name="l00517"></a>00517 <a name="l00518"></a>00518 <span class="comment">/* prepare direct path operation */</span><a name="l00519"></a>00519 <a name="l00520"></a>00520 OCI_CALL2<a name="l00521"></a>00521 (<a name="l00522"></a>00522 res, dp-><a class="code" href="struct_o_c_i___dir_path.html#52410868a337ad04434b1e11859a471b">con</a>,<a name="l00523"></a>00523 <a name="l00524"></a>00524 OCIDirPathPrepare(dp-><a class="code" href="struct_o_c_i___dir_path.html#18e800f3228194e47969ad7d6da19c32">ctx</a>, dp-><a class="code" href="struct_o_c_i___dir_path.html#52410868a337ad04434b1e11859a471b">con</a>-><a class="code" href="struct_o_c_i___connection.html#f20d1bea40e79481aeece933a4c70898">cxt</a>, dp-><a class="code" href="struct_o_c_i___dir_path.html#52410868a337ad04434b1e11859a471b">con</a>-><a class="code" href="struct_o_c_i___connection.html#573a359867139990b1b0f50aa7a86175">err</a>)<a name="l00525"></a>00525 )<a name="l00526"></a>00526 <a name="l00527"></a>00527 <span class="comment">/* allocate column array handle */</span><a name="l00528"></a>00528 <a name="l00529"></a>00529 <span class="keywordflow">if</span> (res == TRUE)<a name="l00530"></a>00530 {<a name="l00531"></a>00531 res = (OCI_SUCCESS == OCI_HandleAlloc((dvoid *) dp-><a class="code" href="struct_o_c_i___dir_path.html#18e800f3228194e47969ad7d6da19c32">ctx</a>,<a name="l00532"></a>00532 (dvoid **) (<span class="keywordtype">void</span> *) &dp-><a class="code" href="struct_o_c_i___dir_path.html#245ced8e5254494510c595464e2f4ca5">arr</a>,<a name="l00533"></a>00533 (ub4) OCI_HTYPE_DIRPATH_COLUMN_ARRAY,<a name="l00534"></a>00534 (<span class="keywordtype">size_t</span>) 0, (dvoid **) NULL));<a name="l00535"></a>00535 }<a name="l00536"></a>00536 <a name="l00537"></a>00537 <span class="comment">/* allocate stream handle */</span><a name="l00538"></a>00538 <a name="l00539"></a>00539 <span class="keywordflow">if</span> (res == TRUE)<a name="l00540"></a>00540 {<a name="l00541"></a>00541 res = (OCI_SUCCESS == OCI_HandleAlloc((dvoid *) dp-><a class="code" href="struct_o_c_i___dir_path.html#18e800f3228194e47969ad7d6da19c32">ctx</a>,<a name="l00542"></a>00542 (dvoid **) (<span class="keywordtype">void</span> *) &dp-><a class="code" href="struct_o_c_i___dir_path.html#cc322268a33f0d39718cb5c8f21e5042">strm</a>,<a name="l00543"></a>00543 (ub4) OCI_HTYPE_DIRPATH_STREAM,<a name="l00544"></a>00544 (<span class="keywordtype">size_t</span>) 0, (dvoid **) NULL));<a name="l00545"></a>00545 }<a name="l00546"></a>00546 <a name="l00547"></a>00547 <span class="comment">/* check the number of rows allocated */</span><a name="l00548"></a>00548 <a name="l00549"></a>00549 <span class="keywordflow">if</span> (res == TRUE)<a name="l00550"></a>00550 {<a name="l00551"></a>00551 ub4 size = <span class="keyword">sizeof</span>(dp-><a class="code" href="struct_o_c_i___dir_path.html#a50ba02bff6cfa8cdb5de298a1157207">nb_rows</a>);<a name="l00552"></a>00552 <a name="l00553"></a>00553 OCI_CALL2<a name="l00554"></a>00554 (<a name="l00555"></a>00555 res, dp-><a class="code" href="struct_o_c_i___dir_path.html#52410868a337ad04434b1e11859a471b">con</a>,<a name="l00556"></a>00556 <a name="l00557"></a>00557 OCIAttrGet(dp-><a class="code" href="struct_o_c_i___dir_path.html#245ced8e5254494510c595464e2f4ca5">arr</a>, OCI_HTYPE_DIRPATH_COLUMN_ARRAY, &dp-><a class="code" href="struct_o_c_i___dir_path.html#a50ba02bff6cfa8cdb5de298a1157207">nb_rows</a>,<a name="l00558"></a>00558 &size, OCI_ATTR_NUM_ROWS, dp-><a class="code" href="struct_o_c_i___dir_path.html#52410868a337ad04434b1e11859a471b">con</a>-><a class="code" href="struct_o_c_i___connection.html#573a359867139990b1b0f50aa7a86175">err</a>)<a name="l00559"></a>00559 )<a name="l00560"></a>00560 <a name="l00561"></a>00561 dp-><a class="code" href="struct_o_c_i___dir_path.html#92069eb0d3771d051e6b87b541e34b59">nb_cur</a> = dp-><a class="code" href="struct_o_c_i___dir_path.html#a50ba02bff6cfa8cdb5de298a1157207">nb_rows</a>;<a name="l00562"></a>00562 }<a name="l00563"></a>00563 <a name="l00564"></a>00564 <span class="comment">/* now, we need to allocate internal buffers */</span><a name="l00565"></a>00565 <a name="l00566"></a>00566 <span class="keywordflow">if</span> (res == TRUE)<a name="l00567"></a>00567 {<a name="l00568"></a>00568 <a name="l00569"></a>00569 <span class="keywordflow">for</span> (i = 0; i < dp-><a class="code" href="struct_o_c_i___dir_path.html#15978bab1953802769c833b776a58bac">nb_cols</a>; i++)<a name="l00570"></a>00570 {<a name="l00571"></a>00571 OCI_DirPathColumn *col = &dp-><a class="code" href="struct_o_c_i___dir_path.html#da8657a28338656329ec2d46e51370d6">cols</a>[i];<a name="l00572"></a>00572 <a name="l00573"></a>00573 <span class="comment">/* data buffers */</span><a name="l00574"></a>00574 <a name="l00575"></a>00575 col->data = (ub1 *) OCI_MemAlloc(OCI_IPC_BUFF_ARRAY, col->bufsize,<a name="l00576"></a>00576 dp-><a class="code" href="struct_o_c_i___dir_path.html#92069eb0d3771d051e6b87b541e34b59">nb_cur</a>, TRUE);<a name="l00577"></a>00577 <a name="l00578"></a>00578 <span class="keywordflow">if</span> (col->data == NULL)<a name="l00579"></a>00579 {<a name="l00580"></a>00580 res = FALSE;<a name="l00581"></a>00581 <span class="keywordflow">break</span>;<a name="l00582"></a>00582 }<a name="l00583"></a>00583 <a name="l00584"></a>00584 <span class="comment">/* data sizes */</span><a name="l00585"></a>00585 <a name="l00586"></a>00586 col->lens = (ub4 *) OCI_MemAlloc(OCI_IPC_BUFF_ARRAY,<span class="keyword">sizeof</span>(ub4),<a name="l00587"></a>00587 dp-><a class="code" href="struct_o_c_i___dir_path.html#92069eb0d3771d051e6b87b541e34b59">nb_cur</a>, TRUE);<a name="l00588"></a>00588 <a name="l00589"></a>00589 <span class="keywordflow">if</span> (col->lens == NULL)<a name="l00590"></a>00590 {<a name="l00591"></a>00591 res = FALSE;<a name="l00592"></a>00592 <span class="keywordflow">break</span>;<a name="l00593"></a>00593 }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -