Форум — Development ORACLE+C 0 0 Privet vsem. Rebiata, kak mne v ORACLE 9I SQL zaprosi posilat' iz C? Esli ODBC to kakaia versia? Esli mogno kakie-nit' primeri v C. Zaranee blagodaren. Tolik. Ссылка
В пелотку ODBC. Юзай OCI. Или, если ты извращенец и тебя мама часто и со вкусом порола розгами (и тебе это нравилось), то юзай Pro*C. Но только не ODBC! ODBC - для некропедозоофилов, а мы ведь просто приличные, культурные садомазо. anonymous (27.02.06 16:01:32 MSK) Ссылка
У оракла есть хорошая дока на эту тему. Understanding the Oracle Programmatic Environments SatanClaus ★★★ (27.02.06 16:05:05 MSK) Ссылка
http://vlad-karpov.narod.ru/Aticles/Oci/OCI.htm UVV ★★★★★ (27.02.06 16:09:09 MSK) Показать ответ Ссылка
Ответ на: комментарий от UVV 27.02.06 16:09:09 MSK Spasibo vsem.UVV otdel'noe. to UVV: v etoj stat'e upominaetsia o primerah. Gde bi ia ih mog najti? Zaranrr blagodaren. virgin13 ★ (27.02.06 19:15:00 MSK) автор топика Показать ответ Ссылка
Ответ на: комментарий от virgin13 27.02.06 19:15:00 MSK Примеры должны быть в самом оракле. Если меня память не подводит. SatanClaus ★★★ (27.02.06 19:44:39 MSK) Показать ответ Ссылка
Ответ на: комментарий от SatanClaus 27.02.06 19:44:39 MSK > Примеры должны быть в самом оракле $ORACLE_HOME/rdbms/demo/ - там же лежат include'ы no-dashi ★★★★★ (28.02.06 07:41:29 MSK) Ссылка
/*************************************************************************** * Copyright (C) 2005 by pvsur * * pvsur@mail.ru * * * ***************************************************************************/ #ifdef HAVE_CONFIG_H #include <config.h> #endif #include "commondefs.h" //#define OTL_ORA7 // Compile OTL 4.0/OCI7 //#define OTL_ORA8 // Compile OTL 4.0/OCI8 //#define OTL_ORA8I // Compile OTL 4.0/OCI8i #define OTL_ORA9I // Compile OTL 4.0/OCI9i //#define OTL_ORA10G // Compile OTL 4.0/OCI10g #define OTL_STREAM_READ_ITERATOR_ON #include <otlv4.h> #include "dbmodule.h" #include "requests.h" #include "logprocess.h" #include <assert.h> using namespace std; otl_connect db; // connect object otl_stream *pi, *pi2; char ConnectString[SUR_MAX_LINE_SIZE]; bool OpenDatabase() { try { otl_connect::otl_initialize(); // initialize OCI environment db.rlogon(ConnectString); // connect to Oracle pi = new otl_stream (1, // buffer size "begin " " bill.PROC_TCS_ADDSUM_EPORT ( " " :cardid<int,in>, " " :summ<float,in>, " " :id<int,in>, " " :hash_param<int,in>, " " :testMode<int,in>, " " :txtreq<char[2048],in>," " :result_<float,out> " " ); " " end; ", db // connect object ); pi2 = new otl_stream (1, // buffer size "select a.card_state_id " " from tcs.tcs_cards a " "where a.card_id = :cardid<int,in>", db // connect object ); LogMessage(LOG_INFO,"%s","Database opened !"); } catch(otl_exception& p) { // intercept OTL exceptions /* cerr<<p.msg<<endl; // print out error message cerr<<p.stm_text<<endl; // print out SQL that caused the error cerr<<p.var_info<<endl; // print out the variable that caused the error*/ LogMessage(LOG_ERR,"%s %s %s","error in execute oracle procedure AddSumm !\n", p.msg, p.stm_text); db.logoff(); // disconnect from Oracle return false; } return true; }; bool CloseDatabase() { db.logoff(); // disconnect from Oracle return true; } TWorkReqErrorCodes ExecAddSumm(int card_id, int card_kc_id, double summ, int id, int hash_param, bool testMode, char* req_txt) { float result_ = -1; // sleep(2); /* LogMessage(LOG_INFO,"id = %d",( id)); LogMessage(LOG_INFO,"hash_param = %d",(hash_param)); LogMessage(LOG_INFO,"card_id = %d",(card_id));*/ try { *pi << (card_id) << (float)summ << ( id) << ( hash_param) << ((testMode ? 1:0))<<req_txt; // i.flush(); *pi >> result_; LogMessage(LOG_INFO,"retcode AddSumm1 = %d",(int)result_); } catch(otl_exception& p) { // intercept OTL exceptions /* cerr<<p.msg<<endl; // print out error message cerr<<p.stm_text<<endl; // print out SQL that caused the error cerr<<p.var_info<<endl; // print out the variable that caused the error*/ LogMessage(LOG_ERR,"%s %s %s","error in execute oracle procedure AddSumm !", p.msg, p.stm_text); result_ = -6; } LogMessage(LOG_INFO,"retcode AddSumm2 = %d",(int)result_); switch ( (int)result_ ) { case 0: return wrSucces; // successfull execution case -1: return wrCardNotOperable; // generic error case -2: return wrBadRequest; // bad valute param case -3: return wrCardNotOperable; // not exists money case -4: return wrAlreadyExecuted; case -5: return wrDublicateRequest; case -6: return wrServerUnavailable; case -7: return wrCardNotFound; default: assert(false); // ??!!?? }; }; sur02111976 ★ (01.03.06 12:40:22 MSK) Ссылка