int main(void) { OCI_Connection *cn; OCI_Statement *st; OCI_Resultset *rs; char rowid[OCI_SIZE_ROWID + 1] = ""; if (!OCI_Initialize(err_handler, NULL, OCI_ENV_DEFAULT)) { return EXIT_FAILURE; } cn = OCI_ConnectionCreate("db", "usr", "pwd", OCI_SESSION_DEFAULT); st = OCI_StatementCreate(cn); OCI_Immediate(cn, "select rowid from products where code = 1", OCI_ARG_TEXT, rowid); OCI_Prepare(st, "select code, name, rowid from products where rowid = :id"); OCI_BindString(st, ":id", rowid, (unsigned int) strlen(rowid)); OCI_Execute(st); rs = OCI_GetResultset(st); OCI_FetchNext(rs); printf("code [%d], name [%s], rowid [%s]", OCI_GetInt(rs, 1), OCI_GetString(rs, 2), OCI_GetString(rs, 3)); OCI_StatementFree(st); OCI_ConnectionFree(cn); OCI_Cleanup(); return EXIT_SUCCESS; }
void worker(OCI_Thread *thread, void *data) { OCI_Connection *cn = OCI_PoolGetConnection(data, NULL); char str[SIZE_STR+1]; /* application work here */ str[0] = 0; OCI_Immediate(cn, "select to_char(sysdate, 'YYYYMMDD HH24:MI:SS') from dual", OCI_ARG_TEXT, str); printf("%s\n", str); /* ... */ OCI_ConnectionFree(cn); }
int main(void) { OCI_Connection *cn; OCI_Statement *st; OCI_Resultset *rs; int code = 1; char name[50]; if (!OCI_Initialize(NULL, NULL, OCI_ENV_DEFAULT)) return EXIT_FAILURE; cn = OCI_ConnectionCreate("db", "usr", "pwd", OCI_SESSION_DEFAULT); st = OCI_StatementCreate(cn); /* sql format with params ----------------------------------------------- */ OCI_ExecuteStmtFmt(st, "select article from test_fetch where code = %i", code); rs = OCI_GetResultset(st); while (OCI_FetchNext(rs)) printf("article : %s\n", OCI_GetString(rs, 1)); /* sql immediate (parse, exec, one fetch) ------------------------------- */ OCI_Immediate(cn, "select code, article from test_fetch where code = 1", OCI_ARG_INT, &code, OCI_ARG_TEXT, name); printf("article : %s - code %i\n", name, code); /* sql immediate (parse, exec, one fetch) with params ------------------- */ OCI_ImmediateFmt(cn, "select article from test_fetch where code = %i", code, OCI_ARG_TEXT, name); printf("article : %s\n", name); OCI_Cleanup(); return EXIT_SUCCESS; }
int main(int argc, char *argv[]) { OCI_Connection *con; OCI_Enqueue *enq; OCI_Dequeue *deq1; OCI_Dequeue *deq2; OCI_Msg *msg; OCI_TypeInfo *inf; OCI_Object *obj; OCI_Agent *agents[2]; OCI_Initialize(err_handler, NULL, OCI_ENV_DEFAULT | OCI_ENV_THREADED |OCI_ENV_EVENTS); con = OCI_ConnectionCreate("db", "usr", "pwd", OCI_SESSION_DEFAULT); OCI_Immediate(con, "create type my_message as object (title varchar2(50), content varchar2(50)) "); OCI_QueueTableCreate(con, "my_queue_table", "my_message", NULL, NULL, TRUE, FALSE, NULL, 0,0,NULL); OCI_QueueCreate(con, "my_queue", "my_queue_table", OCIT_NORMAL, 0, 0, 0, 0, NULL); OCI_QueueStart(con, "my_queue", TRUE, TRUE); agents[0] = OCI_AgentCreate(con, "C1", NULL); agents[1] = OCI_AgentCreate(con, "C2", NULL); inf = OCI_TypeInfoGet(con, "MY_MESSAGE", OCI_TIF_TYPE); enq = OCI_EnqueueCreate(inf, "my_queue"); deq1 = OCI_DequeueCreate(inf, "my_queue"); deq2 = OCI_DequeueCreate(inf, "my_queue"); OCI_DequeueSetConsumer(deq1, "C1"); OCI_DequeueSetNavigation(deq1, OCI_ADN_FIRST_MSG); OCI_DequeueSetConsumer(deq2, "C2"); OCI_DequeueSetNavigation(deq2, OCI_ADN_FIRST_MSG); OCI_DequeueSubscribe(deq1, 9998, 0, on_message); OCI_DequeueSubscribe(deq2, 9999, 0, on_message); msg = OCI_MsgCreate(inf); obj = OCI_ObjectCreate(con, inf); OCI_ObjectSetString(obj, "TITLE", "NEXT MEETING"); OCI_ObjectSetString(obj, "CONTENT", "12:00 PM IN STARBUCKS"); OCI_MsgSetObject(msg, obj); OCI_MsgSetConsumers(msg, agents, 2); OCI_EnqueuePut(enq, msg); OCI_MsgFree(msg); OCI_ObjectFree(obj); OCI_Commit(con); getchar(); OCI_DequeueUnsubscribe(deq1); OCI_DequeueUnsubscribe(deq2); OCI_AgentFree(agents[0]); OCI_AgentFree(agents[1]); OCI_EnqueueFree(enq); OCI_DequeueFree(deq1); OCI_DequeueFree(deq2); OCI_QueueStop(con, "my_queue", TRUE, TRUE, 0); OCI_QueueDrop(con, "my_queue"); OCI_QueueTableDrop(con, "my_queue_table", TRUE); OCI_Immediate(con, "drop type my_message"); OCI_ConnectionFree(con); OCI_Cleanup(); return EXIT_SUCCESS; }