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

SQL Oracle Discussion :

Problème sur une requète qui fonctionne dans SQL developper et pas dans un appel de PRO*C


Sujet :

SQL Oracle

  1. #1
    Membre averti Avatar de pmboutteau
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2005
    Messages
    601
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Santé

    Informations forums :
    Inscription : Février 2005
    Messages : 601
    Points : 420
    Points
    420
    Par défaut Problème sur une requète qui fonctionne dans SQL developper et pas dans un appel de PRO*C
    Bonjour,

    Voici le souci. Je génère des requètes dynamiques via une ihm qui lance derrière un programme C où les curseurs sont fait en PRO*C.

    Je trace mes erreurs oracles. Et voici la requête qui fonctionne sous SQL developper mais qui me génére une erreur ORA-01403: no data found dans ma trace en C.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    select unique matind,(rtrim(A.SJNOMU) || ' ' || rtrim(A.SJPREN))
    from travail T,PSJ A where
    (( A.codhop='081' and A.matric=T.matind)) and T.nomreq='1' and T.utilisa='PBOU81'
    order by (rtrim(A.SJNOMU) || ' ' || rtrim(A.SJPREN)) Asc;
    Si quelqu'un a déjà rencontré ce genre de souci. Merci
    ours ours !! Au début elle est froide mais après elle est bonne!

  2. #2
    Expert confirmé
    Profil pro
    Inscrit en
    Août 2008
    Messages
    2 948
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 2 948
    Points : 5 847
    Points
    5 847
    Par défaut
    Pour éviter toutes ambiguités, tu te connectes bien avec SqlDeveloper avec le même user que l'appli en C ?

  3. #3
    Membre averti Avatar de pmboutteau
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2005
    Messages
    601
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Santé

    Informations forums :
    Inscription : Février 2005
    Messages : 601
    Points : 420
    Points
    420
    Par défaut
    Oui oui.

    Et mon tri est bon dans l'IHM.

    C'est juste sur la trace que çà foire. C'est assez étrange. Je ne sais pas si cela vient du compilateur C. La version d'oracle c'est 10g
    ours ours !! Au début elle est froide mais après elle est bonne!

  4. #4
    Rédacteur

    Homme Profil pro
    Consultant / formateur Oracle et SQL Server
    Inscrit en
    Décembre 2002
    Messages
    3 460
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant / formateur Oracle et SQL Server

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 460
    Points : 8 077
    Points
    8 077
    Par défaut
    Citation Envoyé par pmboutteau Voir le message
    Et voici la requête qui fonctionne sous SQL developper
    "Elle fonctionne", ça veut dire qu'elle ne renvoie pas d'erreur et que le résultat est juste vide ?
    Ou bien vous avez un résultat non vide ?
    Consultant / formateur Oracle indépendant
    Certifié OCP 12c, 11g, 10g ; sécurité 11g

    Ma dernière formation Oracle 19c publiée sur Linkedin : https://fr.linkedin.com/learning/oracle-19c-l-administration

  5. #5
    Membre émérite Avatar de pacmann
    Homme Profil pro
    Consulté Oracle
    Inscrit en
    Juin 2004
    Messages
    1 626
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Consulté Oracle
    Secteur : Distribution

    Informations forums :
    Inscription : Juin 2004
    Messages : 1 626
    Points : 2 845
    Points
    2 845
    Par défaut
    Salut !

    Au pif, je dirais que ton problème est que tu cherches à faire un fetch dans ton PRO*c et qu'il n'y a plus de ligne...

    Tu n'as pas une instruction pour sortir quand le curseur arrive au bout ?

    (La différence avec SQLDevelopper, c'est que quand il n'y a plus de ligne, il ne cherche pas continuer à fetch...)

    (c'est ma photo)
    Paku, Paku !
    Pour les jeunes incultes : non, je ne suis pas un pokémon...

    Le pacblog : http://pacmann.over-blog.com/

  6. #6
    Membre averti Avatar de pmboutteau
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2005
    Messages
    601
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Santé

    Informations forums :
    Inscription : Février 2005
    Messages : 601
    Points : 420
    Points
    420
    Par défaut
    oui la requête affiche bien les données dans SQLDeveloper

    Par contre sur le fetch en C, à chaque lecture code SQL
    ERROR:ORA-01403: no data found
    ours ours !! Au début elle est froide mais après elle est bonne!

  7. #7
    Expert éminent sénior Avatar de mnitu
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2007
    Messages
    5 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2007
    Messages : 5 611
    Points : 11 252
    Points
    11 252
    Par défaut
    Il faut toujours essayer de prendre en compte la réalité. Si le programme Pro*C se termine avec 1403 c’est parce que lors dans fetch il n’y pas des données. Ca c’est un fait ! A partir de ce fait il faut chercher l’explication dans le programme en pro*C : ça peut être une erreur de programmation, ça peut être une erreur de connexion à la base (il se connecte à une autre base que celle où vous testez votre requête en sql developer), ça peut être une erreur de type de données, ça peut être une erreur de non compilation du programme, etc.

  8. #8
    Membre averti Avatar de pmboutteau
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2005
    Messages
    601
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Santé

    Informations forums :
    Inscription : Février 2005
    Messages : 601
    Points : 420
    Points
    420
    Par défaut
    Je vais tester de le recompiler. Il y a eu récemment des soucis de recompilation sur d'autres programmes.
    ours ours !! Au début elle est froide mais après elle est bonne!

  9. #9
    Membre averti Avatar de pmboutteau
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2005
    Messages
    601
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Santé

    Informations forums :
    Inscription : Février 2005
    Messages : 601
    Points : 420
    Points
    420
    Par défaut
    La recompilation ne change rien.

    ce qui me chiffone c'est que le .pc crée un .c qui contient sur mon FETCH

    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
    {
            struct sqlexd sqlstm;
            sqlstm.sqlvsn = 12;
            sqlstm.arrsiz = 6;
            sqlstm.sqladtp = &sqladt;
            sqlstm.sqltdsp = &sqltds;
            sqlstm.iters = (unsigned int  )1;
            sqlstm.offset = (unsigned int  )181;
            sqlstm.selerr = (unsigned short)1;
            sqlstm.cud = sqlcud0;
            sqlstm.sqlest = (unsigned char  *)&sqlca;
            sqlstm.sqlety = (unsigned short)256;
            sqlstm.occurs = (unsigned int  )0;
            sqlstm.sqfoff = (         int )0;
            sqlstm.sqfmod = (unsigned int )2;
            sqlstm.sqhstv[0] = (unsigned char  *)S_select;
            sqlstm.sqhstl[0] = (unsigned long )0;
            sqlstm.sqhsts[0] = (         int  )0;
            sqlstm.sqindv[0] = (         short *)0;
            sqlstm.sqinds[0] = (         int  )0;
            sqlstm.sqharm[0] = (unsigned long )0;
            sqlstm.sqadto[0] = (unsigned short )0;
            sqlstm.sqtdso[0] = (unsigned short )0;
            sqlstm.sqphsv = sqlstm.sqhstv;
            sqlstm.sqphsl = sqlstm.sqhstl;
            sqlstm.sqphss = sqlstm.sqhsts;
            sqlstm.sqpind = sqlstm.sqindv;
            sqlstm.sqpins = sqlstm.sqinds;
            sqlstm.sqparm = sqlstm.sqharm;
            sqlstm.sqparc = sqlstm.sqharc;
            sqlstm.sqpadto = sqlstm.sqadto;
            sqlstm.sqptdso = sqlstm.sqtdso;
            sqlcxt((void **)0, &sqlctx, &sqlstm, &sqlfpn);
            if (sqlca.sqlcode == 1403) break;
            if (sqlca.sqlcode < 0) goto SQL_FIN;
            if (sqlca.sqlwarn[0] == 'W') sql_error();
    }
    le sql_error() déclenche mon écriture de trace et donc l'affichage du -01403.

    Le problème viendrait-il d'ici?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if (sqlca.sqlcode == 1403) break;
            if (sqlca.sqlcode < 0) goto SQL_FIN;
            if (sqlca.sqlwarn[0] == 'W') sql_error();
    ours ours !! Au début elle est froide mais après elle est bonne!

  10. #10
    Expert éminent sénior Avatar de mnitu
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2007
    Messages
    5 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2007
    Messages : 5 611
    Points : 11 252
    Points
    11 252
    Par défaut
    Citation Envoyé par pmboutteau Voir le message
    ...
    le sql_error() déclenche mon écriture de trace et donc l'affichage du -01403.

    Le problème viendrait-il d'ici?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if (sqlca.sqlcode == 1403) break;
            if (sqlca.sqlcode < 0) goto SQL_FIN;
            if (sqlca.sqlwarn[0] == 'W') sql_error();
    Non.

  11. #11
    Membre expérimenté Avatar de Yanika_bzh
    Homme Profil pro
    Responsable Applicatif et R&D
    Inscrit en
    Février 2006
    Messages
    1 144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Responsable Applicatif et R&D
    Secteur : Finance

    Informations forums :
    Inscription : Février 2006
    Messages : 1 144
    Points : 1 738
    Points
    1 738
    Par défaut
    Comment gerez vous votre boucle FETCH ?
    Dans la connaissance du monde, ceux qui ne savent rien en savent toujours autant que ceux qui n'en savent pas plus qu'eux. (Pierre Dac)

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

Discussions similaires

  1. sqlite3, message d'erreur sur une requête qui fonctionne
    Par stefh7 dans le forum Général Python
    Réponses: 13
    Dernier message: 25/02/2011, 13h48
  2. Réponses: 5
    Dernier message: 26/08/2009, 15h40
  3. Problème sur une requête SQL (PL/SQL)
    Par goofyrocks dans le forum Langage SQL
    Réponses: 5
    Dernier message: 13/01/2009, 17h33
  4. Réponses: 2
    Dernier message: 21/10/2008, 13h57
  5. Réponses: 8
    Dernier message: 26/01/2006, 14h47

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