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 :

[PRO*C] Probleme de definition des EXEC SQL


Sujet :

Interfaces de programmation Oracle

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 18
    Points : 16
    Points
    16
    Par défaut [PRO*C] Probleme de definition des EXEC SQL
    Bonjour à tous

    Je requiers votre aide car je suis sur un petit programme en C me permettant d'administrer une base de données MySQL.

    Je souhaiterais utiliser les requetes embarqués dans le code C avec les 'EXEC SQL', mais dés que j'écris une ligne commençant par EXEC SQL ...

    j'ai l'erreur suivante :

    Pourriez vous m'aider à trouver la lumiere ??

    PS : pour ce soucis c'est bon, je passerais par l'APPI MySQL, mais maintenant je voudrais utiliser PRO*C. Mais là, je me vois decouvrir une erreur pas trés claire.

  2. #2
    Expert éminent sénior
    Avatar de Skyounet
    Homme Profil pro
    Software Engineer
    Inscrit en
    Mars 2005
    Messages
    6 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Software Engineer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 6 380
    Points : 13 380
    Points
    13 380
    Par défaut
    Citation Envoyé par Estudiante
    Bonjour à tous

    Je requiers votre aide car je suis sur un petit programme en C me permettant d'administrer une base de données MySQL.

    Je souhaiterais utiliser les requetes embarqués dans le code C avec les 'EXEC SQL', mais dés que j'écris une ligne commençant par EXEC SQL ...

    j'ai l'erreur suivante :

    Pourriez vous m'aider à trouver la lumiere ??
    Ben sans code ça peut-être dur.

  3. #3
    Expert éminent sénior
    Avatar de Skyounet
    Homme Profil pro
    Software Engineer
    Inscrit en
    Mars 2005
    Messages
    6 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Software Engineer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 6 380
    Points : 13 380
    Points
    13 380
    Par défaut
    Alors là j'avoue c'est pas mal.

    Même le dernier #include.

    Quelle est la bibliothèque que tu utilises ?
    Je ne la connais pas mais je ne pense pas que ce soit de cette manière qu'on l'utilises. Un seul conseil lis la doc.

  4. #4
    Membre habitué Avatar de Marco85
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    210
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 210
    Points : 187
    Points
    187
    Par défaut
    C'est quoi ce langage ?

    Effectivement, si tu nous dis quelle bibliothèque tu utilises on pourra peut-être t'aider, mais là, c'est trop balaise pour moi ...

  5. #5
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 381
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 381
    Points : 41 581
    Points
    41 581
    Par défaut
    Généralement, les EXEC SQL montrent un programme en Pro*C, qui n'est pas du C ordinaire : En gros, c'est du C avec du SQL.

    Mais ce n'est pas du C++ non plus : Que vient faire iostream.h ici ?

  6. #6
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par Estudiante
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    #include <"C:\Program Files\C-Cpp\include\c++\3.4.2\backward\iostream.h">
    Pas du C et du très mauvais C++.

    [-mod- si tu veux faire du C++, c'est un autre forum. Je dois déplacer la discussion ?]

  7. #7
    Rédacteur

    Avatar de millie
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    7 015
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 7 015
    Points : 9 818
    Points
    9 818
    Par défaut
    Citation Envoyé par Emmanuel Delahaye
    [-mod- si tu veux faire du C++, c'est un autre forum. Je dois déplacer la discussion ?]
    Je pense qu'elle a inclu le header pour rien, vu qu'elle utilise printf et qu'elle a inclu stdlib.h (et pas cstdlib) et stdio.h (et pas cstdio). Donc a priori, ça devrait rester dans C.

  8. #8
    Membre éprouvé Avatar de zooro
    Homme Profil pro
    Développeur Java
    Inscrit en
    Avril 2006
    Messages
    921
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Avril 2006
    Messages : 921
    Points : 1 260
    Points
    1 260
    Par défaut
    Je connaissais cette syntaxe pour le Pro*C (Oracle) et pour ECPG (PostgreSQL), mais pas pour MySQL.

    Une brève recherche sur leur site ne m'a pas permis de trouver d'équivalent pour MySQL. Cependant, il semble exister une API C. Je te renvoie à la doc: http://dev.mysql.com/doc/refman/5.0/fr/c.html

    Je n'ai pas réussi non plus à trouver un exemple de code C, pour voir à quoi ressemble l'utilisation de cette API.

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 18
    Points : 16
    Points
    16
    Par défaut
    Donc vu que j'ai tout melangé, je vais recommencer correctement.

    Tout d'abord, je remercie sur l'existence de l'API mysql et pour les SQL embarqué pour ORACLE, j'utilise PRO*C.

    le code avant la precompilation est :

    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
    #include <stdio.h>
    #include <conio.h>
    #include <stdlib.h>
    #include <string.h>
     
     
    // Declarations des variables globales de communication avec SQLPLUS
    EXEC SQL BEGIN DECLARE SECTION;
    VARCHAR Login[20], Password[20];
    EXEC SQL END DECLARE SECTION;
     
     
    // Inclusion de la zone de communication SQLCA
    EXEC SQL INCLUDE SQLCA.H;
     
     
    //Prototype des fonctions
    void Connexion_SQL();
    void Erreur_SQL();
     
     
    //Fonction Principale
    int main() {
     
    Connexion_SQL();
     
    }
     
     
    //Fonction de connexion à la BDD Oracle
    void Connexion_SQL() {
     
    printf("Veuillez saisir votre login :\t");
    scanf("%s",&Login);
    printf("Veuillez saisir votre password :\t");
    scanf("%s",&Password);
     
    EXEC SQL WHENEVER SQLERROR DO Erreur_SQL();
    EXEC SQL CONNECT :Login IDENTIFIED BY :Password;
     
    }
     
     
    //Fonction pour gerer les erreurs SQL
    void Erreur_SQL() {
     
    printf("Erreur SQL : %s\n",sqlca.sqlerrm.sqlerrmc);
    exit(1);
     
    }
    Apres avoir fait la commande proc <le nom du fichier.pc>, tout se passe bien.
    Mais quand viens le moment de la compilation du fichier .c créer juste avant, le compilateur me met une erreur sans ligne qui est la suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
      [Linker error] undefined reference to `sqlcxt'
    Donc je voudrais savoir s'il y a une librairie qu'il me manque ... ar j'ai mis le chemin $ORACLE_HOME/precomp/lib et $ORACLE_HOME/lib.

  10. #10
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 381
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 381
    Points : 41 581
    Points
    41 581
    Par défaut
    Est-ce que la bibliothèque en question (la bibliothèque elle-même, pas seulement le chemin de son dossier) est dans la ligne de commande du linker ?

  11. #11
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 18
    Points : 16
    Points
    16
    Par défaut
    Ah non, il n'y pas directement le nom de la bibliotheque dans l'editeur de lien.

    Mais il me faudrait savoir quelle bibliotheque utilisée sous Oracle 10g car en faisant des recherches sur le NET, je n'ai trouvé que des reponses mais sous Oracle 7/8i et les bibliotheques concernées ne possédent plus ce nom...

    PS : j'ai utilisé la orasql10.lib et la orasqx10.lib et ca a l'air de fonctionner !

    Merci en tout cas pour tout ...

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

Discussions similaires

  1. [PRO*C] GCC et "EXEC SQL "
    Par jph_void dans le forum Interfaces de programmation
    Réponses: 3
    Dernier message: 12/06/2007, 09h45
  2. Probleme d'affichage des reponses sql
    Par Lapicure dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 01/06/2007, 20h35
  3. Réponses: 26
    Dernier message: 23/06/2006, 15h45
  4. Requete SQL probleme pour soustraire des résultats
    Par eljeje dans le forum Requêtes
    Réponses: 4
    Dernier message: 13/04/2006, 10h34

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