//----------------------------------------------------------------------------- // dpiObject__clearOracleValue() [INTERNAL] // Clear the Oracle value after use. //----------------------------------------------------------------------------- static void dpiObject__clearOracleValue(dpiObject *obj, dpiError *error, dpiOracleDataBuffer *buffer, dpiOracleTypeNum oracleTypeNum) { switch (oracleTypeNum) { case DPI_ORACLE_TYPE_CHAR: case DPI_ORACLE_TYPE_NCHAR: case DPI_ORACLE_TYPE_VARCHAR: case DPI_ORACLE_TYPE_NVARCHAR: if (buffer->asString) dpiOci__stringResize(obj->env->handle, &buffer->asString, 0, error); break; case DPI_ORACLE_TYPE_TIMESTAMP: if (buffer->asTimestamp) dpiOci__descriptorFree(buffer->asTimestamp, DPI_OCI_DTYPE_TIMESTAMP); break; case DPI_ORACLE_TYPE_TIMESTAMP_TZ: if (buffer->asTimestamp) dpiOci__descriptorFree(buffer->asTimestamp, DPI_OCI_DTYPE_TIMESTAMP_TZ); break; case DPI_ORACLE_TYPE_TIMESTAMP_LTZ: if (buffer->asTimestamp) dpiOci__descriptorFree(buffer->asTimestamp, DPI_OCI_DTYPE_TIMESTAMP_LTZ); break; case DPI_ORACLE_TYPE_CLOB: case DPI_ORACLE_TYPE_NCLOB: case DPI_ORACLE_TYPE_BLOB: case DPI_ORACLE_TYPE_BFILE: if (buffer->asLobLocator) { dpiOci__lobFreeTemporary(obj->type->conn, buffer->asLobLocator, 0, error); dpiOci__descriptorFree(buffer->asLobLocator, DPI_OCI_DTYPE_LOB); } default: break; }; }
//----------------------------------------------------------------------------- // dpiDeqOptions__free() [INTERNAL] // Free the memory for a dequeue options structure. //----------------------------------------------------------------------------- void dpiDeqOptions__free(dpiDeqOptions *options, dpiError *error) { if (options->handle) { dpiOci__descriptorFree(options->handle, DPI_OCI_DTYPE_AQDEQ_OPTIONS); options->handle = NULL; } if (options->conn) { dpiGen__setRefCount(options->conn, error, -1); options->conn = NULL; } dpiUtils__freeMemory(options); }