109 ListedByteStringToByteStringMap map;
110 Connection::splitConnStr(_conns, _connlen, map);
112 ByteString _DATABASE = map[
"DATABASE"];
113 ByteString _USER = map[
"USER"];
114 ByteString _PASSWORD = map[
"PASSWORD"];
115 ByteString _MODE = map[
"MODE"];
117 ub4 operationMode = OCI_DEFAULT;
118 if (!_MODE.isEmpty()) {
119 if (!_MODE.compareNoCase(
"SYSDBA"))
120 operationMode = OCI_SYSDBA;
121 else if (!_MODE.compareNoCase(
"SYSOPER"))
122 operationMode = OCI_SYSOPER;
129 if (_USER.isEmpty()) {
135 sword status = OCI_SUCCESS;
139 status = OCIEnvCreate(
142 | OCI_THREADED | OCI_OBJECT,
150 if (status != OCI_SUCCESS) {
158 if (status != OCI_SUCCESS) {
165 if (status != OCI_SUCCESS) {
171 if (status != OCI_SUCCESS) {
177 if (status != OCI_SUCCESS) {
183 if (status != OCI_SUCCESS) {
189 if (status != OCI_SUCCESS) {
194 status = OCIServerAttach(
198 ?
NULL : (text*)_DATABASE.data(),
200 ? 0 : (sb4) _DATABASE.length(),
203 if (status != OCI_SUCCESS) {
209#if defined(__DCL_DEBUG) && __TRACE_THIS
211 status = OCINlsGetInfo(
216 OCI_NLS_CHARACTER_SET
218 if (status == OCI_SUCCESS) {
224 status = OCINlsGetInfo(
231 if (status == OCI_SUCCESS) {
237 status = OCINlsGetInfo(
244 if (status == OCI_SUCCESS) {
250 status = OCINlsGetInfo(
257 if (status == OCI_SUCCESS) {
273 if (status != OCI_SUCCESS) {
282 (ub4) _USER.length(),
286 if (status != OCI_SUCCESS) {
294 (
void*)_PASSWORD.data(),
295 (ub4) _PASSWORD.length(),
299 if (status != OCI_SUCCESS) {
304 status = OCISessionBegin(
311 if (status != OCI_SUCCESS) {
325 if (status != OCI_SUCCESS) {
338 if (status != OCI_SUCCESS) {
351 if (status != OCI_SUCCESS) {
371 sword status = OCI_SUCCESS;
382 status = OCISessionEnd(
388 if ((status != OCI_SUCCESS) && _normal) {
396 status = OCIServerDetach(
401 if ((status != OCI_SUCCESS) && _normal) {
409 status = OCIHandleFree(
__trans, OCI_HTYPE_TRANS);
410 if ((status != OCI_SUCCESS) && _normal) {
418 status = OCIHandleFree(
__session, OCI_HTYPE_SESSION);
419 if ((status != OCI_SUCCESS) && _normal) {
427 status = OCIHandleFree(
__server, OCI_HTYPE_SERVER);
428 if ((status != OCI_SUCCESS) && _normal) {
436 status = OCIHandleFree(
__svcctx, OCI_HTYPE_SVCCTX);
437 if ((status != OCI_SUCCESS) && _normal) {
445 status = OCIHandleFree(
__error2, OCI_HTYPE_ERROR);
446 if ((status != OCI_SUCCESS) && _normal) {
458 OCIStmt* stmt =
NULL;
460 sword status =
HandleAlloc((
void**)&stmt, OCI_HTYPE_STMT);
461 if (status != OCI_SUCCESS) {
466 status = OCIStmtPrepare2(
477 if (status != OCI_SUCCESS) {
483 ub4 size =
sizeof(stmtType);
493 if (status != OCI_SUCCESS) {
498 status = OCIStmtExecute(
502 (stmtType == OCI_STMT_SELECT) ? 0 : 1,
508 if (status != OCI_SUCCESS) {
513 OCIHandleFree(stmt, OCI_HTYPE_STMT);
519 OCIHandleFree(stmt, OCI_HTYPE_STMT);
643 if (__lastStatus == OCI_ERROR) {
658 len = ByteString::length(_buf, *_buflen);
659 for(; len > 0; len--) {
660 if (!isspace((
unsigned)_buf[len - 1]))
665 const char* psz =
"";
666 switch(__lastStatus) {
667 case OCI_SUCCESS_WITH_INFO :
668 psz =
"OCI_SUCCESS_WITH_INFO";
670 case OCI_RESERVED_FOR_INT_USE :
671 psz =
"OCI_RESERVED_FOR_INT_USE";
679 case OCI_INVALID_HANDLE :
680 psz =
"OCI_INVALID_HANDLE";
683 psz =
"OCI_NEED_DATA";
685 case OCI_STILL_EXECUTING :
686 psz =
"OCI_STILL_EXECUTING";
689 psz =
"OCI_CONTINUE";
691 case OCI_ROWCBK_DONE :
692 psz =
"OCI_ROWCBK_DONE";
700 if (*_buflen < len) {
703 strncpy(_buf, psz, len);
706 if (!__errorMessage.isEmpty()) {
709 str =
", " + __errorMessage;
711 str = __errorMessage;
713 if ((*_buflen - len) >= str.length()) {
717 strncpy(_buf, str.data(), str.length());
722 if (len < *_buflen) {
724 *(_buf + *_buflen) =
'\0';