103 ListedByteStringToByteStringMap map;
104 Connection::splitConnectionString(_connString, _connlen, map);
106 ByteString strDatabase = map[
"DATABASE"];
107 ByteString strUser = map[
"USER"];
108 ByteString strPassword = map[
"PASSWORD"];
109 ByteString strMode = map[
"MODE"];
111 ub4 nOperationMode = OCI_DEFAULT;
112 if (!strMode.isEmpty()) {
113 if (!strMode.compareNoCase(
"SYSDBA"))
114 nOperationMode = OCI_SYSDBA;
115 else if (!strMode.compareNoCase(
"SYSOPER"))
116 nOperationMode = OCI_SYSOPER;
123 if (strUser.isEmpty()) {
128 sword status = OCI_SUCCESS;
132 status = ::OCIEnvCreate(
134 OCI_ENV_NO_MUTEX | OCI_THREADED | OCI_OBJECT,
138 if (status != OCI_SUCCESS) {
146 if (status != OCI_SUCCESS) {
153 if (status != OCI_SUCCESS) {
159 if (status != OCI_SUCCESS) {
165 if (status != OCI_SUCCESS) {
171 if (status != OCI_SUCCESS) {
177 if (status != OCI_SUCCESS) {
182 status = ::OCIServerAttach(
185 strDatabase.isEmpty()?
NULL : (text*)strDatabase.data(),
186 strDatabase.isEmpty()? 0 : strDatabase.length(),
189 if (status != OCI_SUCCESS) {
194#if defined(__DCL_DEBUG) && __TRACE_THIS
197 (OraText*)
buf,
sizeof(
buf), OCI_NLS_CHARACTER_SET);
198 if (status == OCI_SUCCESS) {
205 (OraText*)
buf,
sizeof(
buf), OCI_NLS_LANGUAGE);
206 if (status == OCI_SUCCESS) {
213 (OraText*)
buf,
sizeof(
buf), OCI_NLS_ABLANGUAGE);
214 if (status == OCI_SUCCESS) {
221 (OraText*)
buf,
sizeof(
buf), OCI_NLS_TERRITORY);
222 if (status == OCI_SUCCESS) {
232 status = ::OCIAttrSet(
240 if (status != OCI_SUCCESS) {
245 status = ::OCIAttrSet(
248 (
void*)strUser.data(),
253 if (status != OCI_SUCCESS) {
258 status = ::OCIAttrSet(
261 (
void*)strPassword.data(),
262 strPassword.length(),
266 if (status != OCI_SUCCESS) {
271 status = ::OCISessionBegin(
278 if (status != OCI_SUCCESS) {
284 status = ::OCIAttrSet(
292 if (status != OCI_SUCCESS) {
297 status = ::OCIAttrSet(
305 if (status != OCI_SUCCESS) {
310 status = ::OCIAttrSet(
318 if (status != OCI_SUCCESS) {
337 sword status = OCI_SUCCESS;
348 status = ::OCISessionEnd(
354 if ((status != OCI_SUCCESS) && _normal) {
362 status = ::OCIServerDetach(
367 if ((status != OCI_SUCCESS) && _normal) {
376 if ((status != OCI_SUCCESS) && _normal) {
385 if ((status != OCI_SUCCESS) && _normal) {
394 if ((status != OCI_SUCCESS) && _normal) {
403 if ((status != OCI_SUCCESS) && _normal) {
412 if ((status != OCI_SUCCESS) && _normal) {
424 OCIStmt* pStmt =
NULL;
426 if (status != OCI_SUCCESS) {
431 status = ::OCIStmtPrepare(
439 if (status != OCI_SUCCESS) {
445 status = ::OCIAttrGet(
453 if (status != OCI_SUCCESS) {
458 status = ::OCIStmtExecute(
468 if (status != OCI_SUCCESS) {
591 if (__lastStatus == OCI_ERROR) {
608 if (!isspace((
unsigned)_buf[
len - 1]))
613 const char* psz =
"";
614 switch(__lastStatus) {
615 case OCI_SUCCESS_WITH_INFO :
616 psz =
"OCI_SUCCESS_WITH_INFO";
618 case OCI_RESERVED_FOR_INT_USE :
619 psz =
"OCI_RESERVED_FOR_INT_USE";
627 case OCI_INVALID_HANDLE :
628 psz =
"OCI_INVALID_HANDLE";
631 psz =
"OCI_NEED_DATA";
633 case OCI_STILL_EXECUTING :
634 psz =
"OCI_STILL_EXECUTING";
637 psz =
"OCI_CONTINUE";
639 case OCI_ROWCBK_DONE :
640 psz =
"OCI_ROWCBK_DONE";
651 strncpy(_buf, psz,
len);
654 if (!__errorMessageEx.isEmpty()) {
657 str =
", " + __errorMessageEx;
659 str = __errorMessageEx;
661 if ((*_buflen -
len) >= str.length()) {
667 strncpy(_buf, str.data(), str.length());
675 const char* psz =
"Driver Bug!!";
679 strncpy(_buf, psz, *_buflen);