IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Interfaces de programmation Oracle Discussion :

Erreur de précompilation


Sujet :

Interfaces de programmation Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre émérite Avatar de laurentibus
    Inscrit en
    Mars 2008
    Messages
    875
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Mars 2008
    Messages : 875
    Par défaut Erreur de précompilation
    Bonjour à tous,

    je travaille dans un environnement C++ && oracle ... jusque la ca va

    mon probleme : lorsque je lance la compilation, j'ai un precompilateur qui prend du code pc et le passe en c++ ( si j'aibien compris ).
    Le code pc est essentiellement des procedures stockées que je retrouve dnas ma base oracle : et la !!! j'ai des problemes de correspondance de type entre mon code pc et ma base.

    Voici le code cote base :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
     
     
      PROCEDURE t276_p02(
      filtre IN VARCHAR2 ,
      TabCrit IN OUT cpd_mtc.TabNumCpd_Mtc,
      TabObjet IN OUT cpd_mtc.Tab3Cpd_Mtc,
      TabOrdreCrit IN OUT cpd_mtc.TabNumCpd_Mtc,
      TabOrdreObjet IN OUT cpd_mtc.TabNumCpd_Mtc,
      NbElem IN OUT NUMBER ,
      codeErr IN OUT NUMBER ,
      critErr IN OUT VARCHAR2 )
     
     
    avec 
     
      TYPE Tab3Cpd_Mtc IS TABLE OF
      VARCHAR2(3) NOT NULL
      INDEX BY BINARY_INTEGER;
     
      TYPE TabNumCpd_Mtc IS TABLE OF
      NUMBER(10) NOT NULL
      INDEX BY BINARY_INTEGER;

    et mon code pc :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
     
    fichier .h
    class CCpd_mtc_t276_p02
    :public CExecuteOracle
    {
    public:
    	CCpd_mtc_t276_p02(const char * libelle);
     
    protected:
    	// entrée
    	//char _libelle[500];
    	char* _libelle;
     
    public:
    	virtual void initialize();
    	int _nbElemTab;
    	int _tabOrdreCrit[100];
    	int _tabOrdreObjet[100];
    	int _codeErr;
    	char _critErr[40];
    	int _tabCrit[100];
     
    	//int _tabObjet[100];
    	char* _tabObjet[100];
     
    	virtual const char * className(){return "CCpd_mtc_t276_p02";}
     
    };
     
     
    fichier .pc
     
     
    void CCpd_mtc_t276_p02::initialize()
    {
    	EXEC SQL BEGIN DECLARE SECTION;
     
    	// entrée
     
    	char * LIBELLE; 
    	short ind_LIBELLE;
    	//varchar LIBELLE[500];
     
    	// sorties
     
    	int TABCRIT[100];
    	short ind_TABCRIT[100];
     
     
    	//int TABOBJET[100];
    	char* TABOBJET[100];
    	short ind_TABOBJET[100];
     
     
    	int NBELEMTAB;
    	short ind_NBELEMTAB ;
     
    	int TABORDRECRIT[100];
    	short ind_TABORDRECRIT[100];
     
    	int TABORDREOBJET[100];
    	short ind_TABORDREOBJET[100];
     
    	int CODEERR;
    	short ind_CODEERR;
     
    	varchar CRITERR[40];
    	short ind_CRITERR;
     
    	EXEC SQL END DECLARE SECTION;
     
    	// init des entrées 
    	strcpy((char *)LIBELLE.arr , _libelle);// entrée
    	LIBELLE.len = strlen(_libelle);
    	// init des sorties
     
    	ind_LIBELLE = 0;
    	ind_NBELEMTAB = 0;
    	ind_CODEERR = 0;
    	ind_CRITERR= 0;
     
    	memset(ind_TABCRIT,0,100*sizeof(short));
    	memset(ind_TABOBJET,0,100*sizeof(short));
    	memset(ind_TABORDRECRIT,0,100*sizeof(short));
    	memset(ind_TABORDREOBJET,0,100*sizeof(short));
     
    	NBELEMTAB = 0;
    	CODEERR = 0;
    	CRITERR.len =0;
    	CRITERR.arr[0] = 0;
    	// réponse
    	EXEC SQL EXECUTE 
    		BEGIN  cpd_mtc.t276_p02(:LIBELLE INDICATOR :ind_LIBELLE
    		, :TABCRIT  INDICATOR :ind_TABCRIT
    		, :TABOBJET  INDICATOR :ind_TABOBJET
    		, :TABORDRECRIT  INDICATOR :ind_TABORDRECRIT
    		, :TABORDREOBJET  INDICATOR :ind_TABORDREOBJET
    		, :NBELEMTAB  INDICATOR :ind_NBELEMTAB
    		, :CODEERR  INDICATOR :ind_CODEERR
    		, :CRITERR  INDICATOR :ind_CRITERR); END;
    	END-EXEC;

    et le message d'erreur a la compilation :

    Error at line 3202, column 10 in file .\src_proc\bdb.pc
    BEGIN cpd_mtc.t276_p02(:LIBELLE INDICATOR :ind_LIBELLE
    .........1
    PLS-S-00306, Message 306 not found; No message file for product=plsql, facility=
    PCM
    Error at line 3202, column 10 in file .\src_proc\bdb.pc
    BEGIN cpd_mtc.t276_p02(:LIBELLE INDICATOR :ind_LIBELLE
    .........1
    PLS-S-00000, Statement ignored
    Semantic error at line 3202, column 3, file .\src_proc\bdb.pc:
    BEGIN cpd_mtc.t276_p02(:LIBELLE INDICATOR :ind_LIBELLE
    ..1
    PCC-S-02346, PL/SQL found semantic errors
    voila donc d'apres ce que je comprend le type libelle ne correspond pas entre le pc et la base ...
    idem pour tabObjet .....

    mais quel type dois je mettre pour correspondre avec ma base ?? ..... si c'est bien cela le pb

    Merci d'avance ++

  2. #2
    Membre émérite Avatar de laurentibus
    Inscrit en
    Mars 2008
    Messages
    875
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Mars 2008
    Messages : 875
    Par défaut



  3. #3
    Membre émérite Avatar de laurentibus
    Inscrit en
    Mars 2008
    Messages
    875
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Mars 2008
    Messages : 875
    Par défaut
    ok les gars, y as un boss pro c qui est passé .... cool

    bon alors pour ceux qui aurait le meme pb un de ces 4 .... Envoyer les $$$ a lolo... non je dec allez :

    bon le pb etait donc de faire correspondre les types entres la bases et le pro c ... mais egalement avec le .h (langage c ) qui est different du pro c
    ( ce a quoi je n'avais point penser )


    donc voila pour info la concordance des types dans nos 3 fichiers :
    .h
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    char _tabObjet[100][4];
    .pc
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    varchar TABOBJET[100][3];
    base oracle
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
      TYPE tabObjet IS TABLE OF
      VARCHAR2(3) NOT NULL
      INDEX BY BINARY_INTEGER;


    Puis ensuite ajouter a cela toutes les modifs pour pouvoir comparer notre tableau de char .....



    voila bien chiant surtout quand ca fait 2 ans qu on fait du java ou du net .... mais bon tout est all right ....
    so ++ les amis !! !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [PRO*C][11g] Erreurs précompilations
    Par Vincent Rogier dans le forum Interfaces de programmation
    Réponses: 12
    Dernier message: 11/11/2007, 11h03
  2. Erreur fréquente avec ASP et IIS
    Par Community Management dans le forum ASP
    Réponses: 2
    Dernier message: 11/02/2004, 23h20
  3. Réponses: 2
    Dernier message: 27/05/2002, 20h46
  4. erreur IDL:omg.org/CORBA/MARSHAL:1.0
    Par Pinggui dans le forum CORBA
    Réponses: 3
    Dernier message: 13/05/2002, 16h05
  5. [Kylix] Erreur objet
    Par Anonymous dans le forum EDI
    Réponses: 1
    Dernier message: 22/03/2002, 10h41

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo