boolean OCI_API OCI_DateGetTime ( OCI_Date *date, int *hour, int *min, int *sec ) { ub1 hr = 0; ub1 mn = 0; ub1 sc = 0; OCI_LIB_CALL_ENTER(boolean, FALSE) OCI_CHECK_PTR(OCI_IPC_DATE, date) OCI_CHECK_PTR(OCI_IPC_INT, hour) OCI_CHECK_PTR(OCI_IPC_INT, min) OCI_CHECK_PTR(OCI_IPC_INT, sec) OCIDateGetTime(date->handle, &hr, &mn, &sc); *hour = (int) hr; *min = (int) mn; *sec = (int) sc; call_retval = call_status = TRUE; OCI_LIB_CALL_EXIT() }
boolean OCI_API OCI_DateNextDay ( OCI_Date *date, const otext *day ) { dbtext *dbstr = NULL; int dbsize = -1; OCI_LIB_CALL_ENTER(boolean, FALSE) OCI_CHECK_PTR(OCI_IPC_DATE, date) OCI_CHECK_PTR(OCI_IPC_STRING, day) dbstr = OCI_StringGetOracleString(day, &dbsize); call_status = TRUE; OCI_CALL4 ( call_status, date->err, date->con, OCIDateNextDay(date->err, date->handle, (oratext *) dbstr, (ub4) dbsize, date->handle) ) OCI_StringReleaseOracleString(dbstr); call_retval = call_status; OCI_LIB_CALL_EXIT() }
boolean OCI_API OCI_DateGetDate ( OCI_Date *date, int *year, int *month, int *day ) { sb2 yr = 0; ub1 mt = 0; ub1 dy = 0; OCI_LIB_CALL_ENTER(boolean, FALSE) OCI_CHECK_PTR(OCI_IPC_DATE, date) OCI_CHECK_PTR(OCI_IPC_INT, year) OCI_CHECK_PTR(OCI_IPC_INT, month) OCI_CHECK_PTR(OCI_IPC_INT, day) OCIDateGetDate(date->handle, &yr, &mt, &dy); *year = (int) yr; *month = (int) mt; *day = (int) dy; call_retval = call_status = TRUE; OCI_LIB_CALL_EXIT() }
boolean OCI_API OCI_DateToText ( OCI_Date *date, const otext *fmt, int size, otext *str ) { dbtext *dbstr1 = NULL; dbtext *dbstr2 = NULL; int dbsize1 = size * (int) sizeof(otext); int dbsize2 = -1; OCI_LIB_CALL_ENTER(boolean, FALSE) OCI_CHECK_PTR(OCI_IPC_DATE, date) OCI_CHECK_PTR(OCI_IPC_STRING, str) /* initialize output buffer in case of OCI failure */ str[0] = 0; if (!fmt || !fmt[0]) { fmt = OCI_GetFormat(date->con, OCI_FMT_DATE); } dbstr1 = OCI_StringGetOracleString(str, &dbsize1); dbstr2 = OCI_StringGetOracleString(fmt, &dbsize2); call_status = TRUE; OCI_CALL4 ( call_status, date->err, date->con, OCIDateToText(date->err, date->handle, (oratext *) dbstr2, (ub1) dbsize2, (oratext *) NULL, (ub4) 0, (ub4*) &dbsize1, (oratext *) dbstr1) ) OCI_StringCopyOracleStringToNativeString(dbstr1, str, dbcharcount(dbsize1)); OCI_StringReleaseOracleString(dbstr1); OCI_StringReleaseOracleString(dbstr2); /* set null string terminator */ str[dbcharcount(dbsize1)] = 0; call_retval = call_status; OCI_LIB_CALL_EXIT() }
boolean OCI_API OCI_QueueStart ( OCI_Connection *con, const otext *queue_name, boolean enqueue, boolean dequeue ) { OCI_Statement *st = NULL; OCI_LIB_CALL_ENTER(boolean, FALSE) OCI_CHECK_PTR(OCI_IPC_CONNECTION, con) OCI_CHECK_PTR(OCI_IPC_STRING, queue_name) st = OCI_StatementCreate(con); if (st) { call_status = OCI_Prepare ( st, OTEXT("DECLARE ") OTEXT(" v_enqueue BOOLEAN := FALSE; ") OTEXT(" v_dequeue BOOLEAN := FALSE; ") OTEXT("BEGIN ") OTEXT(" IF (:enqueue = 1) then ") OTEXT(" v_enqueue := TRUE; ") OTEXT(" END IF; ") OTEXT(" IF (:dequeue = 1) then ") OTEXT(" v_dequeue := TRUE; ") OTEXT(" END IF; ") OTEXT(" DBMS_AQADM.START_QUEUE ") OTEXT(" (") OTEXT(" queue_name => :queue_name, ") OTEXT(" enqueue => v_enqueue, ") OTEXT(" dequeue => v_dequeue ") OTEXT(" ); ") OTEXT("END; ") ); call_status = call_status && OCI_BindString(st, OTEXT(":queue_name"), (otext *) queue_name, 0); call_status = call_status && OCI_BindInt(st, OTEXT(":enqueue"), &enqueue); call_status = call_status && OCI_BindInt(st, OTEXT(":dequeue"), &dequeue); call_status = call_status && OCI_Execute(st); OCI_StatementFree(st); } call_retval = call_status; OCI_LIB_CALL_EXIT() }
boolean OCI_API OCI_DateArrayFree ( OCI_Date **dates ) { OCI_LIB_CALL_ENTER(boolean, FALSE) OCI_CHECK_PTR(OCI_IPC_ARRAY, dates) call_retval = call_status = OCI_ArrayFreeFromHandles((void **)dates); OCI_LIB_CALL_EXIT() }
boolean OCI_API OCI_QueueAlter ( OCI_Connection *con, const otext *queue_name, unsigned int max_retries, unsigned int retry_delay, unsigned int retention_time, const otext *comment ) { OCI_Statement *st = NULL; OCI_LIB_CALL_ENTER(boolean, FALSE) OCI_CHECK_PTR(OCI_IPC_CONNECTION, con) OCI_CHECK_PTR(OCI_IPC_STRING, queue_name) st = OCI_StatementCreate(con); if (st) { call_status = OCI_Prepare ( st, OTEXT("BEGIN ") OTEXT(" DBMS_AQADM.ALTER_QUEUE ") OTEXT(" (") OTEXT(" queue_name => :queue_name, ") OTEXT(" max_retries => :max_retries, ") OTEXT(" retry_delay => :retry_delay, ") OTEXT(" retention_time => :retention_time, ") OTEXT(" comment => :comment ") OTEXT(" ); ") OTEXT("END; ") ); call_status = call_status && OCI_BindString(st, OTEXT(":queue_name"), (otext *) queue_name, 0); call_status = call_status && OCI_BindUnsignedInt(st, OTEXT(":max_retries"), &max_retries); call_status = call_status && OCI_BindUnsignedInt(st, OTEXT(":retry_delay"), &retry_delay); call_status = call_status && OCI_BindUnsignedInt(st, OTEXT(":retention_time"), &retention_time); call_status = call_status && OCI_BindString(st, OTEXT(":comment"), (otext *) (comment ? comment : OCI_STRING_EMPTY), 0); call_status = call_status && OCI_Execute(st); OCI_StatementFree(st); } call_retval = call_status; OCI_LIB_CALL_EXIT() }
boolean OCI_API OCI_QueueTableAlter ( OCI_Connection *con, const otext *queue_table, const otext *comment, unsigned int primary_instance, unsigned int secondary_instance ) { OCI_Statement *st = NULL; OCI_LIB_CALL_ENTER(boolean, FALSE) OCI_CHECK_PTR(OCI_IPC_CONNECTION, con) OCI_CHECK_PTR(OCI_IPC_STRING, queue_table) st = OCI_StatementCreate(con); if (st) { call_status = OCI_Prepare ( st, OTEXT("BEGIN ") OTEXT(" DBMS_AQADM.ALTER_QUEUE_TABLE ") OTEXT(" (") OTEXT(" queue_table => :queue_table, ") OTEXT(" comment => :comment, ") OTEXT(" primary_instance => :primary_instance, ") OTEXT(" secondary_instance => :secondary_instance ") OTEXT(" ); ") OTEXT("END; ") ); call_status = call_status && OCI_BindString(st, OTEXT(":queue_table"), (otext *) queue_table, 0); call_status = call_status && OCI_BindString(st, OTEXT(":comment"), (otext *) (comment ? comment: OCI_STRING_EMPTY), 0); call_status = call_status && OCI_BindUnsignedInt(st, OTEXT(":primary_instance"), &primary_instance); call_status = call_status && OCI_BindUnsignedInt(st, OTEXT(":secondary_instance"), &secondary_instance); call_status = call_status && OCI_Execute(st); OCI_StatementFree(st); } call_retval = call_status; OCI_LIB_CALL_EXIT() }
boolean OCI_API OCI_QueueTableDrop ( OCI_Connection *con, const otext *queue_table, boolean force ) { OCI_Statement *st = NULL; OCI_LIB_CALL_ENTER(boolean, FALSE) OCI_CHECK_PTR(OCI_IPC_CONNECTION, con) OCI_CHECK_PTR(OCI_IPC_STRING, queue_table) st = OCI_StatementCreate(con); if (st) { call_status = OCI_Prepare ( st, OTEXT("DECLARE ") OTEXT(" v_force BOOLEAN := FALSE; ") OTEXT("BEGIN ") OTEXT(" IF (:force = 1) then ") OTEXT(" v_force := TRUE; ") OTEXT(" END IF; ") OTEXT(" DBMS_AQADM.DROP_QUEUE_TABLE ") OTEXT(" (") OTEXT(" queue_table => :queue_table, ") OTEXT(" force => v_force ") OTEXT(" ); ") OTEXT("END; ") ); call_status = call_status && OCI_BindString(st, OTEXT(":queue_table"), (otext *)queue_table, 0); call_status = call_status && OCI_BindInt(st, OTEXT(":force"), &force); call_status = call_status && OCI_Execute(st); OCI_StatementFree(st); } call_retval = call_status; OCI_LIB_CALL_EXIT() }
boolean OCI_API OCI_DateSetDate ( OCI_Date *date, int year, int month, int day ) { OCI_LIB_CALL_ENTER(boolean, FALSE) OCI_CHECK_PTR(OCI_IPC_DATE, date) OCIDateSetDate(date->handle, (sb2) year, (ub1) month, (ub1) day); call_retval = call_status = TRUE; OCI_LIB_CALL_EXIT() }
boolean OCI_API OCI_DateSetTime ( OCI_Date *date, int hour, int min, int sec ) { OCI_LIB_CALL_ENTER(boolean, FALSE) OCI_CHECK_PTR(OCI_IPC_DATE, date) OCIDateSetTime(date->handle, (ub1) hour, (ub1) min, (ub1) sec); call_retval = call_status = TRUE; OCI_LIB_CALL_EXIT() }
boolean OCI_API OCI_DateToCTime ( OCI_Date *date, struct tm *ptm, time_t *pt ) { time_t time = (time_t) -1; struct tm t; OCI_LIB_CALL_ENTER(boolean, FALSE) OCI_CHECK_PTR(OCI_IPC_DATE, date) call_status = TRUE; t.tm_year = date->handle->OCIDateYYYY - 1900; t.tm_mon = date->handle->OCIDateMM - 1; t.tm_mday = date->handle->OCIDateDD; t.tm_hour = date->handle->OCIDateTime.OCITimeHH; t.tm_min = date->handle->OCIDateTime.OCITimeMI; t.tm_sec = date->handle->OCIDateTime.OCITimeSS; t.tm_wday = 0; t.tm_yday = 0; t.tm_isdst = -1; time = mktime(&t); if (ptm) { memcpy(ptm, &t, sizeof(t)); } if (pt) { *pt = time; } call_retval = (time != (time_t)-1); OCI_LIB_CALL_EXIT() }
boolean OCI_API OCI_DateFromText ( OCI_Date *date, const otext *str, const otext *fmt ) { dbtext *dbstr1 = NULL; dbtext *dbstr2 = NULL; int dbsize1 = -1; int dbsize2 = -1; OCI_LIB_CALL_ENTER(boolean, FALSE) OCI_CHECK_PTR(OCI_IPC_DATE, date) OCI_CHECK_PTR(OCI_IPC_STRING, str) call_status = TRUE; if (!fmt || !fmt[0]) { fmt = OCI_GetFormat(date->con, OCI_FMT_DATE); } dbstr1 = OCI_StringGetOracleString(str, &dbsize1); dbstr2 = OCI_StringGetOracleString(fmt, &dbsize2); OCI_CALL4 ( call_status, date->err, date->con, OCIDateFromText(date->err, (oratext *) dbstr1, (ub4) dbsize1, (oratext *) dbstr2, (ub1) dbsize2, (oratext *) NULL, (ub4) 0, date->handle) ) OCI_StringReleaseOracleString(dbstr1); OCI_StringReleaseOracleString(dbstr2); call_retval = call_status; OCI_LIB_CALL_EXIT() }
boolean OCI_API OCI_HashAddPointer ( OCI_HashTable *table, const otext *key, void *value ) { OCI_Variant v; OCI_LIB_CALL_ENTER(boolean, FALSE) OCI_CHECK_PTR(OCI_IPC_HASHTABLE, table) OCI_CHECK_COMPAT(NULL, table->type == OCI_HASH_POINTER) v.p_void = value; call_retval = call_status = OCI_HashAdd(table, key, v, OCI_HASH_POINTER); OCI_LIB_CALL_EXIT() }
boolean OCI_API OCI_HashAddString ( OCI_HashTable *table, const otext *key, const otext *value ) { OCI_Variant v; OCI_LIB_CALL_ENTER(boolean, FALSE) OCI_CHECK_PTR(OCI_IPC_HASHTABLE, table) OCI_CHECK_COMPAT(NULL, table->type == OCI_HASH_STRING) v.p_text = (otext *) value; call_retval = call_status = OCI_HashAdd(table, key, v, OCI_HASH_STRING); OCI_LIB_CALL_EXIT() }
boolean OCI_API OCI_DateZoneToZone ( OCI_Date *date, const otext *zone1, const otext *zone2 ) { dbtext *dbstr1 = NULL; dbtext *dbstr2 = NULL; int dbsize1 = -1; int dbsize2 = -1; OCI_LIB_CALL_ENTER(boolean, FALSE) OCI_CHECK_PTR(OCI_IPC_DATE, date) OCI_CHECK_PTR(OCI_IPC_STRING, zone1) OCI_CHECK_PTR(OCI_IPC_STRING, zone2) dbstr1 = OCI_StringGetOracleString(zone1, &dbsize1); dbstr2 = OCI_StringGetOracleString(zone2, &dbsize2); call_status = TRUE; OCI_CALL4 ( call_status, date->err, date->con, OCIDateZoneToZone(date->err, date->handle, (oratext *) dbstr1, (ub4) dbsize1, (oratext *) dbstr2, (ub4) dbsize2, date->handle) ) OCI_StringReleaseOracleString(dbstr1); OCI_StringReleaseOracleString(dbstr2); call_retval = call_status; OCI_LIB_CALL_EXIT() }
boolean OCI_API OCI_DateSysDate ( OCI_Date *date ) { OCI_LIB_CALL_ENTER(boolean, FALSE) OCI_CHECK_PTR(OCI_IPC_DATE, date) call_status = TRUE; OCI_CALL4 ( call_status, date->err, date->con, OCIDateSysDate(date->err, date->handle) ) call_retval = call_status; OCI_LIB_CALL_EXIT() }
boolean OCI_API OCI_QueueDrop ( OCI_Connection *con, const otext *queue_name ) { OCI_Statement *st = NULL; OCI_LIB_CALL_ENTER(boolean, FALSE) OCI_CHECK_PTR(OCI_IPC_CONNECTION, con) OCI_CHECK_PTR(OCI_IPC_STRING, queue_name) st = OCI_StatementCreate(con); if (st) { call_status = OCI_Prepare ( st, OTEXT("BEGIN ") OTEXT(" DBMS_AQADM.DROP_QUEUE ") OTEXT(" (") OTEXT(" queue_name => :queue_name ") OTEXT(" ); ") OTEXT("END; ") ); call_status = call_status && OCI_BindString(st, OTEXT(":queue_name"), (otext *) queue_name, 0); call_status = call_status && OCI_Execute(st); OCI_StatementFree(st); } call_retval = call_status; OCI_LIB_CALL_EXIT() }
boolean OCI_API OCI_DateAddMonths ( OCI_Date *date, int nb ) { OCI_LIB_CALL_ENTER(boolean, FALSE) OCI_CHECK_PTR(OCI_IPC_DATE, date) call_status = TRUE; OCI_CALL4 ( call_status, date->err, date->con, OCIDateAddMonths(date->err, date->handle, (sb4) nb, date->handle) ) call_retval = call_status; OCI_LIB_CALL_EXIT() }
boolean OCI_API OCI_QueueTableCreate ( OCI_Connection *con, const otext *queue_table, const otext *queue_payload_type, const otext *storage_clause, const otext *sort_list, boolean multiple_consumers, unsigned int message_grouping, const otext *comment, unsigned int primary_instance, unsigned int secondary_instance, const otext *compatible ) { OCI_Statement *st = NULL; OCI_LIB_CALL_ENTER(boolean, FALSE) OCI_CHECK_PTR(OCI_IPC_CONNECTION, con) OCI_CHECK_PTR(OCI_IPC_STRING, queue_table) OCI_CHECK_PTR(OCI_IPC_STRING, queue_payload_type) OCI_CHECK_ENUM_VALUE(con, NULL, message_grouping, GroupingModeValues, OTEXT("Grouping mode")) st = OCI_StatementCreate(con); if (st) { call_status = OCI_Prepare ( st, OTEXT("DECLARE ") OTEXT(" v_multiple_consumers BOOLEAN := FALSE; ") OTEXT("BEGIN ") OTEXT(" IF (:multiple_consumers = 1) then ") OTEXT(" v_multiple_consumers := TRUE; ") OTEXT(" END IF; ") OTEXT(" DBMS_AQADM.CREATE_QUEUE_TABLE ") OTEXT(" (") OTEXT(" queue_table => :queue_table, ") OTEXT(" queue_payload_type => :queue_payload_type, ") OTEXT(" storage_clause => :storage_clause, ") OTEXT(" sort_list => :sort_list, ") OTEXT(" multiple_consumers => v_multiple_consumers, ") OTEXT(" message_grouping => :message_grouping, ") OTEXT(" comment => :comment, ") OTEXT(" primary_instance => :primary_instance, ") OTEXT(" secondary_instance => :secondary_instance, ") OTEXT(" compatible => :compatible") OTEXT(" ); ") OTEXT("END; ") ); call_status = call_status && OCI_BindString(st, OTEXT(":queue_table"), (otext *) queue_table, 0); call_status = call_status && OCI_BindString(st, OTEXT(":queue_payload_type"), (otext *) queue_payload_type, 0); call_status = call_status && OCI_BindString(st, OTEXT(":storage_clause"), (otext *) (storage_clause ? storage_clause : OCI_STRING_EMPTY), 0); call_status = call_status && OCI_BindString(st, OTEXT(":sort_list"), (otext *) (sort_list ? sort_list : OCI_STRING_EMPTY), 0); call_status = call_status && OCI_BindInt(st, OTEXT(":multiple_consumers"), &multiple_consumers); call_status = call_status && OCI_BindUnsignedInt(st, OTEXT(":message_grouping"), &message_grouping); call_status = call_status && OCI_BindString(st, OTEXT(":comment"), (otext *)( comment ? comment : OCI_STRING_EMPTY), 0); call_status = call_status && OCI_BindUnsignedInt(st, OTEXT(":primary_instance"), &primary_instance); call_status = call_status && OCI_BindUnsignedInt(st, OTEXT(":secondary_instance"), &secondary_instance); call_status = call_status && OCI_BindString(st, OTEXT(":compatible"), (otext *) (compatible ? compatible : OCI_STRING_EMPTY), 0); call_status = call_status && OCI_Execute(st); OCI_StatementFree(st); } call_retval = call_status; OCI_LIB_CALL_EXIT() }
boolean OCI_API OCI_QueueCreate ( OCI_Connection *con, const otext *queue_name, const otext *queue_table, unsigned int queue_type, unsigned int max_retries, unsigned int retry_delay, unsigned int retention_time, boolean dependency_tracking, const otext *comment ) { OCI_Statement *st = NULL; OCI_LIB_CALL_ENTER(boolean, FALSE) OCI_CHECK_PTR(OCI_IPC_CONNECTION, con) OCI_CHECK_PTR(OCI_IPC_STRING, queue_name) OCI_CHECK_PTR(OCI_IPC_STRING, queue_table) OCI_CHECK_ENUM_VALUE(con, NULL, queue_type, QueueTypeValues, OTEXT("Queue type")) st = OCI_StatementCreate(con); if (st) { call_status = OCI_Prepare ( st, OTEXT("DECLARE ") OTEXT(" v_dependency_tracking BOOLEAN := FALSE; ") OTEXT("BEGIN ") OTEXT(" IF (:dependency_tracking = 1) then ") OTEXT(" v_dependency_tracking := TRUE; ") OTEXT(" END IF; ") OTEXT(" DBMS_AQADM.CREATE_QUEUE ") OTEXT(" (") OTEXT(" queue_name => :queue_name, ") OTEXT(" queue_table => :queue_table, ") OTEXT(" queue_type => :queue_type, ") OTEXT(" max_retries => :max_retries, ") OTEXT(" retry_delay => :retry_delay, ") OTEXT(" retention_time => :retention_time, ") OTEXT(" dependency_tracking => v_dependency_tracking, ") OTEXT(" comment => :comment ") OTEXT(" ); ") OTEXT("END; ") ); call_status = call_status && OCI_BindString(st, OTEXT(":queue_name"), (otext *) queue_name, 0); call_status = call_status && OCI_BindString(st, OTEXT(":queue_table"), (otext *) queue_table, 0); call_status = call_status && OCI_BindUnsignedInt(st, OTEXT(":queue_type"), &queue_type); call_status = call_status && OCI_BindUnsignedInt(st, OTEXT(":max_retries"), &max_retries); call_status = call_status && OCI_BindUnsignedInt(st, OTEXT(":retry_delay"), &retry_delay); call_status = call_status && OCI_BindUnsignedInt(st, OTEXT(":retention_time"), &retention_time); call_status = call_status && OCI_BindInt(st, OTEXT(":dependency_tracking"), &dependency_tracking); call_status = call_status && OCI_BindString(st, OTEXT(":comment"), (otext *) (comment ? comment : OCI_STRING_EMPTY), 0); call_status = call_status && OCI_Execute(st); OCI_StatementFree(st); } call_retval = call_status; OCI_LIB_CALL_EXIT() }
boolean OCI_API OCI_HashFree ( OCI_HashTable *table ) { unsigned int i; OCI_HashEntry *e1 = NULL, *e2 = NULL; OCI_HashValue *v1 = NULL, *v2 = NULL; OCI_LIB_CALL_ENTER(boolean, FALSE) OCI_CHECK_PTR(OCI_IPC_HASHTABLE, table) if (table->items) { for (i = 0; i < table->size; i++) { e1 = table->items[i]; while (e1) { e2 = e1; e1 = e1->next; v1 = e2->values; while (v1) { v2 = v1; v1 = v1->next; if (OCI_HASH_STRING == table->type) { OCI_FREE(v2->value.p_text) } OCI_FREE(v2) } if (e2->key) { OCI_FREE(e2->key) } if (e2) { OCI_FREE(e2) } } } OCI_FREE(table->items) } OCI_FREE(table) call_status = TRUE; OCI_LIB_CALL_EXIT() }