/*---------------------------------------------------------------------------------*/ /* $RCSfile: dbbench.c,v $ */ /*---------------------------------------------------------------------------------*/ /* $Revision: 1.1 $ */ /* $Name: $ */ /* $Date: 2006/02/28 23:28:21 $ */ /* $Author: agibert $ */ /*---------------------------------------------------------------------------------*/ /*---------------------------------------------------------------------------------*/ /* This file is part of LibDataBase */ /* */ /* LibDataBase is free software; you can redistribute it and/or modify */ /* it under the terms of the GNU Lesser General Public Licence as published by */ /* the Free Software Foundation; either version 2.1 of the License, or */ /* (at your option) any later version. */ /* */ /* LibDataBase is distributed in the hope that it will be useful, */ /* but WITHOUT ANY WARRANTY; without even the implied warranty of */ /* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the */ /* GNU Lesser General Public License for more details. */ /* */ /* You should have received a copy of the GNU Lesser General Public License */ /* along with LibDataBase; if not, write to the Free Software */ /* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ /*---------------------------------------------------------------------------------*/ #include #include #include #include #include "../lib/database.h" /* Définition des propriétés de la tables sur laquelle les tests sont réalisés */ /* CREATE TABLE TOTO ( CD_TOTO CHAR (3) NOT NULL PRIMARY KEY, LIB_TOTO VARCHAR2 (50), NUM_TOTO NUMBER (5) NOT NULL, DAT_TOTO DATE); */ #define CD_TOTO_LEN 3 #define LIB_TOTO_LEN 50 /* Mesure des temps d'exécution */ typedef struct { double sec; struct timeval start; struct timeval stop; } cpt; #define t_start(x) {gettimeofday (&(x.start), NULL);} #define t_stop(x) {gettimeofday (&(x.stop), NULL); x.sec=(double)(x.stop.tv_sec)-(double)(x.start.tv_sec)+((double)(x.stop.tv_usec)-(double)(x.start.tv_usec))/1000000;} #define NB_MAX_RECORD 2 #define USAGE "Usage : %s insert|update|delete|select [start=] [exec=]\n" /*--------------------------------------------------------------*/ /* Fonction principale du bench */ /*--------------------------------------------------------------*/ int main ( int argc , char ** argv ) { cpt t_exec; DBT_Status rc; DBT_Result Result; DBT_Result ins_Result; unsigned int i; unsigned int Start_Idx = 0; unsigned int Nb_Exec = NB_MAX_RECORD; const char * Request; const char * ins_Request; DBT_Indicator Tab_Indic [NB_MAX_RECORD]; DBT_Indicator Tab_ins_Indic [NB_MAX_RECORD]; char Tab_CD_TOTO [NB_MAX_RECORD][CD_TOTO_LEN + 1]; char Tab_LIB_TOTO [NB_MAX_RECORD][LIB_TOTO_LEN + 1]; char Date_Value [11]; int Tab_NUM_TOTO [NB_MAX_RECORD]; int Tab_CT_PERSONNE_PHYSIQUE[NB_MAX_RECORD]; int Tab_ins_CT_PERSONNE_PHYSIQUE[NB_MAX_RECORD]; char Tab_NUM_PP[NB_MAX_RECORD][8]; char Tab_ins_NUM_PP[NB_MAX_RECORD][8]; DBT_Date * Tab_DAT_DER_MAJ_BDM; DBT_Date * Tab_DAT_CRE_PP_BDM; int Tab_CT_CG_RDP[NB_MAX_RECORD]; int Tab_NUM_IDENT_CG_RDP[NB_MAX_RECORD]; DBT_Date * Tab_DAT_CRE_CG_BDM_RDP; char Tab_CD_BQUE_RDP[NB_MAX_RECORD][6]; char Tab_CD_GUI_CLI_RDP[NB_MAX_RECORD][6]; char Tab_CD_ACT_ECO[NB_MAX_RECORD][3]; char Tab_CD_PAYS_NAIS[NB_MAX_RECORD][3]; int Tab_CD_SOGETYPE[NB_MAX_RECORD]; char Tab_CD_SIT_FAM[NB_MAX_RECORD][3]; char Tab_CD_CMN_INSEE_NAIS[NB_MAX_RECORD][3]; char Tab_CD_PAYS_RM[NB_MAX_RECORD][3]; char Tab_CD_PAYS_RF[NB_MAX_RECORD][3]; char Tab_CD_DEPT_NAIS[NB_MAX_RECORD][3]; char Tab_CD_ST_PROF[NB_MAX_RECORD][3]; char Tab_NOM_PAT[NB_MAX_RECORD][33]; char Tab_NOM_MAR[NB_MAX_RECORD][33]; char Tab_PNOM_OFF[NB_MAX_RECORD][33]; char Tab_PNOM_SUPP[NB_MAX_RECORD][33]; char Tab_RAISON_SOC[NB_MAX_RECORD][41]; int Tab_CT_FOYER_MKT[NB_MAX_RECORD]; char Tab_CD_CAT_PROF[NB_MAX_RECORD][3]; int Tab_CT_ADRESSE[NB_MAX_RECORD]; char Tab_CD_SEXE[NB_MAX_RECORD][3]; int Tab_CD_ST_INT_CHQ[NB_MAX_RECORD]; char Tab_CD_ST_DECEDE[NB_MAX_RECORD][3]; int Tab_CD_ST_COM_PP[NB_MAX_RECORD]; int Tab_CD_ETA_PP[NB_MAX_RECORD]; int Tab_CD_ST_TECH[NB_MAX_RECORD]; char Tab_CD_IND_PP_ANO[NB_MAX_RECORD][2]; int Tab_CD_CAP_JUR[NB_MAX_RECORD]; int Tab_CD_UNIC_PP[NB_MAX_RECORD]; char Tab_ADR_EMAIL[NB_MAX_RECORD][81]; DBT_Date * Tab_DAT_DER_MAJ_BLPP; DBT_Date * Tab_DAT_DEB_REL_PP; DBT_Date * Tab_DAT_NAIS; DBT_Date * Tab_DAT_PUR_BLPP; DBT_Date * Tab_DAT_FIN_ACT_COM; int Tab_AGE[NB_MAX_RECORD]; char Tab_NUM_FAX[NB_MAX_RECORD][16]; char Tab_NUM_TEL_DOM[NB_MAX_RECORD][16]; char Tab_NUM_PORT[NB_MAX_RECORD][16]; int Tab_STP_MKT[NB_MAX_RECORD]; int Tab_STP_TEL[NB_MAX_RECORD]; int Tab_TP_FICP[NB_MAX_RECORD]; int Tab_TP_BFM[NB_MAX_RECORD]; int Tab_TP_HDG[NB_MAX_RECORD]; int Tab_TP_CLI_SNS[NB_MAX_RECORD]; int Tab_TP_NOR_DAT_NAIS[NB_MAX_RECORD]; int Tab_TP_TEL_DOM[NB_MAX_RECORD]; int Tab_TP_RLV_BRA[NB_MAX_RECORD]; int Tab_CD_PRIO_FOY[NB_MAX_RECORD]; char Tab_CD_SEG_MAR[NB_MAX_RECORD][6]; DBT_HostVar CT_PERSONNE_PHYSIQUE; DBT_HostVar NUM_PP; DBT_HostVar DAT_DER_MAJ_BDM; DBT_HostVar DAT_CRE_PP_BDM; DBT_HostVar CT_CG_RDP; DBT_HostVar NUM_IDENT_CG_RDP; DBT_HostVar DAT_CRE_CG_BDM_RDP; DBT_HostVar CD_BQUE_RDP; DBT_HostVar CD_GUI_CLI_RDP; DBT_HostVar CD_ACT_ECO; DBT_HostVar CD_PAYS_NAIS; DBT_HostVar CD_SOGETYPE; DBT_HostVar CD_SIT_FAM; DBT_HostVar CD_CMN_INSEE_NAIS; DBT_HostVar CD_PAYS_RM; DBT_HostVar CD_PAYS_RF; DBT_HostVar CD_DEPT_NAIS; DBT_HostVar CD_ST_PROF; DBT_HostVar NOM_PAT; DBT_HostVar NOM_MAR; DBT_HostVar PNOM_OFF; DBT_HostVar PNOM_SUPP; DBT_HostVar RAISON_SOC; DBT_HostVar CT_FOYER_MKT; DBT_HostVar CD_CAT_PROF; DBT_HostVar CT_ADRESSE; DBT_HostVar CD_SEXE; DBT_HostVar CD_ST_INT_CHQ; DBT_HostVar CD_ST_DECEDE; DBT_HostVar CD_ST_COM_PP; DBT_HostVar CD_ETA_PP; DBT_HostVar CD_ST_TECH; DBT_HostVar CD_IND_PP_ANO; DBT_HostVar CD_CAP_JUR; DBT_HostVar CD_UNIC_PP; DBT_HostVar ADR_EMAIL; DBT_HostVar DAT_DER_MAJ_BLPP; DBT_HostVar DAT_DEB_REL_PP; DBT_HostVar DAT_NAIS; DBT_HostVar DAT_PUR_BLPP; DBT_HostVar DAT_FIN_ACT_COM; DBT_HostVar AGE; DBT_HostVar NUM_FAX; DBT_HostVar NUM_TEL_DOM; DBT_HostVar NUM_PORT; DBT_HostVar STP_MKT; DBT_HostVar STP_TEL; DBT_HostVar TP_FICP; DBT_HostVar TP_BFM; DBT_HostVar TP_HDG; DBT_HostVar TP_CLI_SNS; DBT_HostVar TP_NOR_DAT_NAIS; DBT_HostVar TP_TEL_DOM; DBT_HostVar TP_RLV_BRA; DBT_HostVar CD_PRIO_FOY; DBT_HostVar CD_SEG_MAR; DBT_HostVar SEL_NUM_TOTO; DBT_Cursor Cursor; int t1, t2; DBT_Indicator Tab_Indic_CT_PERSONNE_PHYSIQUE [NB_MAX_RECORD]; DBT_Indicator Tab_Indic_NUM_PP [NB_MAX_RECORD]; DBT_Indicator Tab_Indic_DAT_DER_MAJ_BDM [NB_MAX_RECORD]; DBT_Indicator Tab_Indic_DAT_CRE_PP_BDM [NB_MAX_RECORD]; DBT_Indicator Tab_Indic_CT_CG_RDP [NB_MAX_RECORD]; DBT_Indicator Tab_Indic_NUM_IDENT_CG_RDP [NB_MAX_RECORD]; DBT_Indicator Tab_Indic_DAT_CRE_CG_BDM_RDP [NB_MAX_RECORD]; DBT_Indicator Tab_Indic_CD_BQUE_RDP [NB_MAX_RECORD]; DBT_Indicator Tab_Indic_CD_GUI_CLI_RDP [NB_MAX_RECORD]; DBT_Indicator Tab_Indic_CD_ACT_ECO [NB_MAX_RECORD]; DBT_Indicator Tab_Indic_CD_PAYS_NAIS [NB_MAX_RECORD]; DBT_Indicator Tab_Indic_CD_SOGETYPE [NB_MAX_RECORD]; DBT_Indicator Tab_Indic_CD_SIT_FAM [NB_MAX_RECORD]; DBT_Indicator Tab_Indic_CD_CMN_INSEE_NAIS [NB_MAX_RECORD]; DBT_Indicator Tab_Indic_CD_PAYS_RM [NB_MAX_RECORD]; DBT_Indicator Tab_Indic_CD_PAYS_RF [NB_MAX_RECORD]; DBT_Indicator Tab_Indic_CD_DEPT_NAIS [NB_MAX_RECORD]; DBT_Indicator Tab_Indic_CD_ST_PROF [NB_MAX_RECORD]; DBT_Indicator Tab_Indic_NOM_PAT [NB_MAX_RECORD]; DBT_Indicator Tab_Indic_NOM_MAR [NB_MAX_RECORD]; DBT_Indicator Tab_Indic_PNOM_OFF [NB_MAX_RECORD]; DBT_Indicator Tab_Indic_PNOM_SUPP [NB_MAX_RECORD]; DBT_Indicator Tab_Indic_RAISON_SOC [NB_MAX_RECORD]; DBT_Indicator Tab_Indic_CT_FOYER_MKT [NB_MAX_RECORD]; DBT_Indicator Tab_Indic_CD_CAT_PROF [NB_MAX_RECORD]; DBT_Indicator Tab_Indic_CT_ADRESSE [NB_MAX_RECORD]; DBT_Indicator Tab_Indic_CD_SEXE [NB_MAX_RECORD]; DBT_Indicator Tab_Indic_CD_ST_INT_CHQ [NB_MAX_RECORD]; DBT_Indicator Tab_Indic_CD_ST_DECEDE [NB_MAX_RECORD]; DBT_Indicator Tab_Indic_CD_ST_COM_PP [NB_MAX_RECORD]; DBT_Indicator Tab_Indic_CD_ETA_PP [NB_MAX_RECORD]; DBT_Indicator Tab_Indic_CD_ST_TECH [NB_MAX_RECORD]; DBT_Indicator Tab_Indic_CD_IND_PP_ANO [NB_MAX_RECORD]; DBT_Indicator Tab_Indic_CD_CAP_JUR [NB_MAX_RECORD]; DBT_Indicator Tab_Indic_CD_UNIC_PP [NB_MAX_RECORD]; DBT_Indicator Tab_Indic_ADR_EMAIL [NB_MAX_RECORD]; DBT_Indicator Tab_Indic_DAT_DER_MAJ_BLPP [NB_MAX_RECORD]; DBT_Indicator Tab_Indic_DAT_DEB_REL_PP [NB_MAX_RECORD]; DBT_Indicator Tab_Indic_DAT_NAIS [NB_MAX_RECORD]; DBT_Indicator Tab_Indic_DAT_PUR_BLPP [NB_MAX_RECORD]; DBT_Indicator Tab_Indic_DAT_FIN_ACT_COM [NB_MAX_RECORD]; DBT_Indicator Tab_Indic_AGE [NB_MAX_RECORD]; DBT_Indicator Tab_Indic_NUM_FAX [NB_MAX_RECORD]; DBT_Indicator Tab_Indic_NUM_TEL_DOM [NB_MAX_RECORD]; DBT_Indicator Tab_Indic_NUM_PORT [NB_MAX_RECORD]; DBT_Indicator Tab_Indic_STP_MKT [NB_MAX_RECORD]; DBT_Indicator Tab_Indic_STP_TEL [NB_MAX_RECORD]; DBT_Indicator Tab_Indic_TP_FICP [NB_MAX_RECORD]; DBT_Indicator Tab_Indic_TP_BFM [NB_MAX_RECORD]; DBT_Indicator Tab_Indic_TP_HDG [NB_MAX_RECORD]; DBT_Indicator Tab_Indic_TP_CLI_SNS [NB_MAX_RECORD]; DBT_Indicator Tab_Indic_TP_NOR_DAT_NAIS [NB_MAX_RECORD]; DBT_Indicator Tab_Indic_TP_TEL_DOM [NB_MAX_RECORD]; DBT_Indicator Tab_Indic_TP_RLV_BRA [NB_MAX_RECORD]; DBT_Indicator Tab_Indic_CD_PRIO_FOY [NB_MAX_RECORD]; DBT_Indicator Tab_Indic_CD_SEG_MAR [NB_MAX_RECORD]; /* Ouverture de la librairie */ if (DB_Library_Open (DBD_ERRMSG | DBD_DEBUG) != DBS_OK) { fprintf (stderr, "=> Ouverture de la lbrairie LIBDATABASE impossible\n"); goto Error0; } /* Connexion à la base de données */ /* if (DB_DataBase_Connect (ORACLE, "PBDME1", "entr", "entr") != DBS_OK) */ if (DB_DataBase_Connect (ORACLE, "ENT1", "beatrice", "beatrice") != DBS_OK) { fprintf (stderr, "=> Connexion à la base impossible\n"); DB_Library_Close (); goto Error1; } /* D\351finition des tableaux de valeurs */ DB_DateArray_Alloc (&Tab_DAT_DER_MAJ_BDM, NB_MAX_RECORD); DB_DateArray_Alloc (&Tab_DAT_CRE_PP_BDM, NB_MAX_RECORD); DB_DateArray_Alloc (&Tab_DAT_CRE_CG_BDM_RDP, NB_MAX_RECORD); DB_DateArray_Alloc (&Tab_DAT_DER_MAJ_BLPP, NB_MAX_RECORD); DB_DateArray_Alloc (&Tab_DAT_DEB_REL_PP, NB_MAX_RECORD); DB_DateArray_Alloc (&Tab_DAT_NAIS, NB_MAX_RECORD); DB_DateArray_Alloc (&Tab_DAT_PUR_BLPP, NB_MAX_RECORD); DB_DateArray_Alloc (&Tab_DAT_FIN_ACT_COM, NB_MAX_RECORD); /* Définition des variables hôtes */ DB_HostVar_Setup (&CT_PERSONNE_PHYSIQUE,INTEGER,35,Tab_CT_PERSONNE_PHYSIQUE, Tab_Indic_CT_PERSONNE_PHYSIQUE); DB_HostVar_Setup (&NUM_PP, STRING,7,Tab_NUM_PP, Tab_Indic_NUM_PP); DB_HostVar_Setup (&DAT_DER_MAJ_BDM,DATE,NULL,Tab_DAT_DER_MAJ_BDM, Tab_Indic_DAT_DER_MAJ_BDM); DB_HostVar_Setup (&DAT_CRE_PP_BDM,DATE,NULL,Tab_DAT_CRE_PP_BDM, Tab_Indic_DAT_CRE_PP_BDM); DB_HostVar_Setup (&CT_CG_RDP,INTEGER,35,Tab_CT_CG_RDP, Tab_Indic_CT_CG_RDP); DB_HostVar_Setup (&NUM_IDENT_CG_RDP,INTEGER,11,Tab_NUM_IDENT_CG_RDP, Tab_Indic_NUM_IDENT_CG_RDP); DB_HostVar_Setup (&DAT_CRE_CG_BDM_RDP,DATE,NULL,Tab_DAT_CRE_CG_BDM_RDP, Tab_Indic_DAT_CRE_CG_BDM_RDP); DB_HostVar_Setup (&CD_BQUE_RDP, STRING,5,Tab_CD_BQUE_RDP, Tab_Indic_CD_BQUE_RDP); DB_HostVar_Setup (&CD_GUI_CLI_RDP, STRING,5,Tab_CD_GUI_CLI_RDP, Tab_Indic_CD_GUI_CLI_RDP); DB_HostVar_Setup (&CD_ACT_ECO, STRING,2,Tab_CD_ACT_ECO, Tab_Indic_CD_ACT_ECO); DB_HostVar_Setup (&CD_PAYS_NAIS, STRING,2,Tab_CD_PAYS_NAIS, Tab_Indic_CD_PAYS_NAIS); DB_HostVar_Setup (&CD_SOGETYPE,INTEGER,2,Tab_CD_SOGETYPE, Tab_Indic_CD_SOGETYPE); DB_HostVar_Setup (&CD_SIT_FAM, STRING,2,Tab_CD_SIT_FAM, Tab_Indic_CD_SIT_FAM); DB_HostVar_Setup (&CD_CMN_INSEE_NAIS, STRING,5,Tab_CD_CMN_INSEE_NAIS, Tab_Indic_CD_CMN_INSEE_NAIS); DB_HostVar_Setup (&CD_PAYS_RM, STRING,2,Tab_CD_PAYS_RM, Tab_Indic_CD_PAYS_RM); DB_HostVar_Setup (&CD_PAYS_RF, STRING,2,Tab_CD_PAYS_RF, Tab_Indic_CD_PAYS_RF); DB_HostVar_Setup (&CD_DEPT_NAIS, STRING,2,Tab_CD_DEPT_NAIS, Tab_Indic_CD_DEPT_NAIS); DB_HostVar_Setup (&CD_ST_PROF, STRING,2,Tab_CD_ST_PROF, Tab_Indic_CD_ST_PROF); DB_HostVar_Setup (&NOM_PAT, STRING,32,Tab_NOM_PAT, Tab_Indic_NOM_PAT); DB_HostVar_Setup (&NOM_MAR, STRING,32,Tab_NOM_MAR, Tab_Indic_NOM_MAR); DB_HostVar_Setup (&PNOM_OFF, STRING,32,Tab_PNOM_OFF, Tab_Indic_PNOM_OFF); DB_HostVar_Setup (&PNOM_SUPP, STRING,32,Tab_PNOM_SUPP, Tab_Indic_PNOM_SUPP); DB_HostVar_Setup (&RAISON_SOC, STRING,40,Tab_RAISON_SOC, Tab_Indic_RAISON_SOC); DB_HostVar_Setup (&CT_FOYER_MKT,INTEGER,35,Tab_CT_FOYER_MKT, Tab_Indic_CT_FOYER_MKT); DB_HostVar_Setup (&CD_CAT_PROF, STRING,2,Tab_CD_CAT_PROF, Tab_Indic_CD_CAT_PROF); DB_HostVar_Setup (&CT_ADRESSE,INTEGER,35,Tab_CT_ADRESSE, Tab_Indic_CT_ADRESSE); DB_HostVar_Setup (&CD_SEXE, STRING,2,Tab_CD_SEXE, Tab_Indic_CD_SEXE); DB_HostVar_Setup (&CD_ST_INT_CHQ,INTEGER,1,Tab_CD_ST_INT_CHQ, Tab_Indic_CD_ST_INT_CHQ); DB_HostVar_Setup (&CD_ST_DECEDE, STRING,2,Tab_CD_ST_DECEDE, Tab_Indic_CD_ST_DECEDE); DB_HostVar_Setup (&CD_ST_COM_PP,INTEGER,1,Tab_CD_ST_COM_PP, Tab_Indic_CD_ST_COM_PP); DB_HostVar_Setup (&CD_ETA_PP,INTEGER,1,Tab_CD_ETA_PP, Tab_Indic_CD_ETA_PP); DB_HostVar_Setup (&CD_ST_TECH,INTEGER,1,Tab_CD_ST_TECH, Tab_Indic_CD_ST_TECH); DB_HostVar_Setup (&CD_IND_PP_ANO, STRING,1,Tab_CD_IND_PP_ANO, Tab_Indic_CD_IND_PP_ANO); DB_HostVar_Setup (&CD_CAP_JUR,INTEGER,1,Tab_CD_CAP_JUR, Tab_Indic_CD_CAP_JUR); DB_HostVar_Setup (&CD_UNIC_PP,INTEGER,12,Tab_CD_UNIC_PP, Tab_Indic_CD_UNIC_PP); DB_HostVar_Setup (&ADR_EMAIL, STRING,60,Tab_ADR_EMAIL, Tab_Indic_ADR_EMAIL); DB_HostVar_Setup (&DAT_DER_MAJ_BLPP,DATE,NULL,Tab_DAT_DER_MAJ_BLPP, Tab_Indic_DAT_DER_MAJ_BLPP); DB_HostVar_Setup (&DAT_DEB_REL_PP,DATE,NULL,Tab_DAT_DEB_REL_PP, Tab_Indic_DAT_DEB_REL_PP); DB_HostVar_Setup (&DAT_NAIS,DATE,NULL,Tab_DAT_NAIS, Tab_Indic_DAT_NAIS); DB_HostVar_Setup (&DAT_PUR_BLPP,DATE,NULL,Tab_DAT_PUR_BLPP, Tab_Indic_DAT_PUR_BLPP); DB_HostVar_Setup (&DAT_FIN_ACT_COM,DATE,NULL,Tab_DAT_FIN_ACT_COM, Tab_Indic_DAT_FIN_ACT_COM); DB_HostVar_Setup (&AGE,INTEGER,3,Tab_AGE, Tab_Indic_AGE); DB_HostVar_Setup (&NUM_FAX, STRING,15,Tab_NUM_FAX, Tab_Indic_NUM_FAX); DB_HostVar_Setup (&NUM_TEL_DOM, STRING,15,Tab_NUM_TEL_DOM, Tab_Indic_NUM_TEL_DOM); DB_HostVar_Setup (&NUM_PORT, STRING,15,Tab_NUM_PORT, Tab_Indic_NUM_PORT); DB_HostVar_Setup (&STP_MKT,INTEGER,1,Tab_STP_MKT, Tab_Indic_STP_MKT); DB_HostVar_Setup (&STP_TEL,INTEGER,1,Tab_STP_TEL, Tab_Indic_STP_TEL); DB_HostVar_Setup (&TP_FICP,INTEGER,1,Tab_TP_FICP, Tab_Indic_TP_FICP); DB_HostVar_Setup (&TP_BFM,INTEGER,1,Tab_TP_BFM, Tab_Indic_TP_BFM); DB_HostVar_Setup (&TP_HDG,INTEGER,1,Tab_TP_HDG, Tab_Indic_TP_HDG); DB_HostVar_Setup (&TP_CLI_SNS,INTEGER,1,Tab_TP_CLI_SNS, Tab_Indic_TP_CLI_SNS); DB_HostVar_Setup (&TP_NOR_DAT_NAIS,INTEGER,1,Tab_TP_NOR_DAT_NAIS, Tab_Indic_TP_NOR_DAT_NAIS); DB_HostVar_Setup (&TP_TEL_DOM,INTEGER,1,Tab_TP_TEL_DOM, Tab_Indic_TP_TEL_DOM); DB_HostVar_Setup (&TP_RLV_BRA,INTEGER,1,Tab_TP_RLV_BRA, Tab_Indic_TP_RLV_BRA); DB_HostVar_Setup (&CD_PRIO_FOY,INTEGER,2,Tab_CD_PRIO_FOY, Tab_Indic_CD_PRIO_FOY); DB_HostVar_Setup (&CD_SEG_MAR, STRING,5,Tab_CD_SEG_MAR, Tab_Indic_CD_SEG_MAR); /* Exécution de la requête */ /* DB_HostVar_Setup(&SEL_NUM_TOTO, INTEGER, NULL, &Start_Idx, &Start_Idx); */ Request = "SELECT \ CT_PERSONNE_PHYSIQUE, \ NUM_PP, \ DAT_DER_MAJ_BDM, \ DAT_CRE_PP_BDM, \ CT_CG_RDP, \ NUM_IDENT_CG_RDP, \ DAT_CRE_CG_BDM_RDP, \ CD_BQUE_RDP, \ CD_GUI_CLI_RDP, \ CD_ACT_ECO, \ CD_PAYS_NAIS, \ CD_SOGETYPE, \ CD_SIT_FAM, \ CD_CMN_INSEE_NAIS, \ CD_PAYS_RM, \ CD_PAYS_RF, \ CD_DEPT_NAIS, \ CD_ST_PROF, \ NOM_PAT, \ NOM_MAR, \ PNOM_OFF, \ PNOM_SUPP, \ RAISON_SOC, \ CT_FOYER_MKT, \ CD_CAT_PROF, \ CT_ADRESSE, \ CD_SEXE, \ CD_ST_INT_CHQ, \ CD_ST_DECEDE, \ CD_ST_COM_PP, \ CD_ETA_PP, \ CD_ST_TECH, \ CD_IND_PP_ANO, \ CD_CAP_JUR, \ CD_UNIC_PP, \ ADR_EMAIL, \ DAT_DER_MAJ_BLPP, \ CD_SEG_MAR \ FROM TB_PERSONNE_PHYSIQUE"; /* Ouverture d'un curseur */ rc = DB_Cursor_Open (&Cursor, &Result, Request,NULL); if (rc != DBS_OK) { fprintf (stderr, "=> Sélection impossible\n"); goto Error2; } /* Fetch du curseur */ rc = DB_Cursor_Fetch (Cursor, &Result, Nb_Exec, &CT_PERSONNE_PHYSIQUE, &NUM_PP, &DAT_DER_MAJ_BDM, &DAT_CRE_PP_BDM, &CT_CG_RDP, &NUM_IDENT_CG_RDP, &DAT_CRE_CG_BDM_RDP, &CD_BQUE_RDP, &CD_GUI_CLI_RDP, &CD_ACT_ECO, &CD_PAYS_NAIS, &CD_SOGETYPE, &CD_SIT_FAM, &CD_CMN_INSEE_NAIS, &CD_PAYS_RM, &CD_PAYS_RF, &CD_DEPT_NAIS, &CD_ST_PROF, &NOM_PAT, &NOM_MAR, &PNOM_OFF, &PNOM_SUPP, &RAISON_SOC, &CT_FOYER_MKT, &CD_CAT_PROF, &CT_ADRESSE, &CD_SEXE, &CD_ST_INT_CHQ, &CD_ST_DECEDE, &CD_ST_COM_PP, &CD_ETA_PP, &CD_ST_TECH, &CD_IND_PP_ANO, &CD_CAP_JUR, &CD_UNIC_PP, &ADR_EMAIL, &DAT_DER_MAJ_BLPP, &CD_SEG_MAR, NULL); if (rc == DBS_OK) { fprintf (stderr, "=> %d enregistrement(s) sélectionné(s) :\n", Result.Row_Num); } else if (rc == DBS_ERRNODATA) { fprintf (stderr, "=> Il y a moins de %d enregistrement(s) à sélectionner.\n", Nb_Exec); } else { fprintf (stderr, "=> Sélection impossible\n"); DB_Cursor_Close (Cursor); goto Error2; } for (i = 0; i < Result.Row_Num; i++) { if (DB_DateToString_Convert (Tab_DAT_DER_MAJ_BDM, i, Date_Value, NULL) != DBS_OK) goto Error2; fprintf (stderr, "Debug HME Tab_Indic_CD_ETA_PP = ##%d##\n", Tab_Indic_CD_ETA_PP[i]); fprintf (stderr, "Debug HME CD_ETA_PP = ##%d##\n", Tab_CD_ETA_PP[i]); fprintf (stderr, "Debug HME Tab_Indic_CD_ST_TECH = ##%d##\n", Tab_Indic_CD_ST_TECH[i]); fprintf (stderr, "Debug HME CD_ST_TECH = ##%d##\n", Tab_CD_ST_TECH[i]); } /* Fermeture du curseur */ DB_Cursor_Close (Cursor); if (DB_DataBase_Disconnect () != DBS_OK) { fprintf (stderr, "=> D\351connexion de la base impossible\n"); goto Error1; } /* INsertion dans la table TEST_ENS */ t_start (t_exec); /* Connexion \340 la base de donn\351es */ if (DB_DataBase_Connect (ORACLE, "ENT1", "beatrice", "beatrice") != DBS_OK) { fprintf (stderr, "=> Connexion \340 la base impossible\n"); DB_Library_Close (); goto Error1; } ins_Request = "INSERT INTO TEST_ENS \ ( \ CT_PERSONNE_PHYSIQUE, \ NUM_PP, \ DAT_DER_MAJ_BDM \ /* DAT_CRE_PP_BDM, \ CT_CG_RDP, \ NUM_IDENT_CG_RDP, \ DAT_CRE_CG_BDM_RDP, \ CD_BQUE_RDP, \ CD_GUI_CLI_RDP, \ CD_ACT_ECO, \ CD_PAYS_NAIS, \ CD_SOGETYPE, \ CD_SIT_FAM, \ CD_CMN_INSEE_NAIS, \ CD_PAYS_RM, \ CD_PAYS_RF, \ CD_DEPT_NAIS, \ CD_ST_PROF, \ NOM_PAT, \ NOM_MAR, \ PNOM_OFF, \ PNOM_SUPP, \ RAISON_SOC, \ CT_FOYER_MKT, \ CD_CAT_PROF, \ CT_ADRESSE, \ CD_SEXE, \ CD_ST_INT_CHQ, \ CD_ST_DECEDE, \ CD_ST_COM_PP, \ CD_ETA_PP, \ CD_ST_TECH, \ CD_IND_PP_ANO, \ CD_CAP_JUR, \ CD_UNIC_PP, \ ADR_EMAIL, \ DAT_DER_MAJ_BLPP, \ CD_SEG_MAR */ ) \ VALUES \ ( \ :1, \ :2, \ :3 \ /* :4, \ :5, \ :6, \ :7, \ :8, \ :9, \ :10, \ :11, \ :12, \ :13, \ :14, \ :15, \ :16, \ :17, \ :18, \ :19, \ :20, \ :21, \ :22, \ :23, \ :24, \ :25, \ :26, \ :27, \ :28, \ :29, \ :30, \ :31, \ :32, \ :33, \ :34, \ :35, \ :36, \ :37, \ :38 */ )"; fprintf (stderr, "Result.Row_Num = ##%d##\n",Result.Row_Num); fprintf (stderr, "Start_Idx = ##%d##\n",Start_Idx); fprintf (stderr, "ins_Request = ##%s##\n",ins_Request); rc = DB_Insert_Exec (&ins_Result, ins_Request, Nb_Exec, Start_Idx, &CT_PERSONNE_PHYSIQUE, &NUM_PP, &DAT_DER_MAJ_BDM, /* &DAT_CRE_PP_BDM, &CT_CG_RDP, &NUM_IDENT_CG_RDP, &DAT_CRE_CG_BDM_RDP, &CD_BQUE_RDP, &CD_GUI_CLI_RDP, &CD_ACT_ECO, &CD_PAYS_NAIS, &CD_SOGETYPE, &CD_SIT_FAM, &CD_CMN_INSEE_NAIS, &CD_PAYS_RM, &CD_PAYS_RF, &CD_DEPT_NAIS, &CD_ST_PROF, &NOM_PAT, &NOM_MAR, &PNOM_OFF, &PNOM_SUPP, &RAISON_SOC, &CT_FOYER_MKT, &CD_CAT_PROF, &CT_ADRESSE, &CD_SEXE, &CD_ST_INT_CHQ, &CD_ST_DECEDE, &CD_ST_COM_PP, &CD_ETA_PP, &CD_ST_TECH, &CD_IND_PP_ANO, &CD_CAP_JUR, &CD_UNIC_PP, &ADR_EMAIL, &DAT_DER_MAJ_BLPP, &CD_SEG_MAR, */ NULL); if (rc == DBS_OK) { fprintf (stderr, "Insert OK\n"); } else { fprintf (stderr, "Insert a échoué\n"); } /* if (DB_Transaction_Start (&t1) != DBS_OK) goto Error2; rc = DB_Insert_Exec (&Result, Request, 10, 0, &CD_TOTO, &LIB_TOTO, &NUM_TOTO, &DAT_TOTO, NULL); if (DB_Transaction_Start (&t2) != DBS_OK) goto Error2; rc = DB_Insert_Exec (&Result, Request, 10, 10, &CD_TOTO, &LIB_TOTO, &NUM_TOTO, &DAT_TOTO, NULL); if (DB_Transaction_Change (t1) != DBS_OK) goto Error2; rc = DB_Insert_Exec (&Result, Request, 10, 20, &CD_TOTO, &LIB_TOTO, &NUM_TOTO, &DAT_TOTO, NULL); if (DB_Transaction_Change (t2) != DBS_OK) goto Error2; rc = DB_Insert_Exec (&Result, Request, 10, 30, &CD_TOTO, &LIB_TOTO, &NUM_TOTO, &DAT_TOTO, NULL); if (DB_Rollback_Exec () != DBS_OK) goto Error2; if (DB_Transaction_End () != DBS_OK) goto Error2; if (DB_Transaction_Change (t1) != DBS_OK) goto Error2; if (DB_Commit_Exec () != DBS_OK) goto Error2; if (DB_Transaction_End () != DBS_OK) goto Error2; */ t_stop (t_exec); /* Affichage du temps d'exécution */ if (Result.Row_Num) { fprintf (stdout, "%d enregistrement(s) traité(s) en %.4f sec (%.2f enreg/sec)\n", Result.Row_Num, t_exec.sec, Result.Row_Num / t_exec.sec ); } if (DB_Commit_Exec () != DBS_OK) goto Error2; /* Libération des ressources */ DB_DateArray_Free (Tab_DAT_DER_MAJ_BDM); DB_DateArray_Free (Tab_DAT_CRE_PP_BDM); DB_DateArray_Free (Tab_DAT_CRE_CG_BDM_RDP); DB_DateArray_Free (Tab_DAT_DER_MAJ_BLPP); DB_DateArray_Free (Tab_DAT_DEB_REL_PP); DB_DateArray_Free (Tab_DAT_NAIS); DB_DateArray_Free (Tab_DAT_PUR_BLPP); DB_DateArray_Free (Tab_DAT_FIN_ACT_COM); /* Déconnexion de la base */ if (DB_DataBase_Disconnect () != DBS_OK) { fprintf (stderr, "=> Déconnexion de la base impossible\n"); goto Error1; } /* Fermeture de la librairie */ if (DB_Library_Close () != DBS_OK) { fprintf (stderr, "=> Fermeture de la librairie LIBDATABASE impossible\n"); goto Error0; } return 0; /* Traitement des erreurs */ Error2: DB_DateArray_Free (Tab_DAT_DER_MAJ_BDM); DB_DateArray_Free (Tab_DAT_CRE_PP_BDM); DB_DateArray_Free (Tab_DAT_CRE_CG_BDM_RDP); DB_DateArray_Free (Tab_DAT_DER_MAJ_BLPP); DB_DateArray_Free (Tab_DAT_DEB_REL_PP); DB_DateArray_Free (Tab_DAT_NAIS); DB_DateArray_Free (Tab_DAT_PUR_BLPP); DB_DateArray_Free (Tab_DAT_FIN_ACT_COM); DB_DataBase_Disconnect (); Error1: DB_Library_Close (); Error0: return -1; }