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

Bases de données Delphi Discussion :

Erreur 937 programme delphi avec oracle 12c


Sujet :

Bases de données Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif
    Profil pro
    Étudiant
    Inscrit en
    Février 2009
    Messages
    99
    Détails du profil
    Informations personnelles :
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2009
    Messages : 99
    Par défaut Erreur 937 programme delphi avec oracle 12c
    Bonjour,

    nous exécutions un programme delphi avec oracle11g avec succès. Récemment , nous avons migré la BD vers la 12c .

    Nous avons remarqué les erreurs suivante dans le fichier allert :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    WARNING: too many parse errors, count=9800 SQL hash=0x40625158
    PARSE ERROR: ospid=26424, error=937 for statement
    select count(*)  nbr, TAB_COMPT_TEST.ROWID from  TAB_COMPT_TEST where etat = 'ACF'
    Nous avons remarqué que la requête renvoyée dans le fichier alert et celle qui existe dans le programme ne correspondent pas :

    requête fichier alert : select count(*) nbr, TAB_COMPT_TEST.ROWID from TAB_COMPT_TEST where etat = 'ACF'
    requête programme : select count(*) nbr, TAB_COMPT_TEST from TAB_COMPT_TEST where etat = 'ACF'


    Nous avons ouvert une requête auprès du support oracle mais ce dernier nous renvoie vers l'application alors que nous n'avons pas apporté de modifications.

    Merci

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    La requête initiale ne semble pas correcte ...

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    select count(*) nbr, TAB_COMPT_TEST from TAB_COMPT_TEST where etat = 'ACF'

    Je viens de faire un test du même genre de requête avec Firebird (mais ça reste du SQL quand même !) et j'ai un beau message d'erreur !!! Il n'est pas possible d'avoir un nom de table dans un SELECT (du moins comme la requête l'utilise) ... Quel est l'intérêt d'avoir le nom de la table dans le SELECT ?

    La requête ne serait pas plutôt
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    select count(*) nbr from TAB_COMPT_TEST where etat = 'ACF'
    Celle-ci fonctionnerait bien mieux, surtout s'il s'agit juste de retourner un nombre d'enregistrements suivant une condition ... Et, pour le coup, le support Oracle a raison : il s'agit bien d'un pb dans le programme (requête) et non sur Oracle.

    Pour résoudre le problème, je commencerais par revoir la requête ...

    PS : n'ayant pas fait de SQL depuis un certain temps et ne connaissant pas toutes les subtilités de Oracle, je peux me tromper ...

    Cdt

    Laurent
    Dernière modification par Andnotor ; 27/09/2019 à 09h26. Motif: [code=sql]

  3. #3
    Membre émérite
    Homme Profil pro
    Chef de projets retraité
    Inscrit en
    Juillet 2011
    Messages
    452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Cher (Centre)

    Informations professionnelles :
    Activité : Chef de projets retraité
    Secteur : Transports

    Informations forums :
    Inscription : Juillet 2011
    Messages : 452
    Par défaut
    Bonjour,

    une simple recherche sur erreur 937 indique que si tu as une colonne supplémentaire avec un fonction de regroupement (TAB_COMPT_TEST.ROWID) il te faut une clause GROUP BY

    Donc rajoute ta clause GROUP BY dans ta requête ou supprimes la colonne (je crois par ailleurs que si tu utilise ROWID tu ne vas pas regrouper grand chose

    Cordialement

  4. #4
    Membre très actif
    Profil pro
    Étudiant
    Inscrit en
    Février 2009
    Messages
    99
    Détails du profil
    Informations personnelles :
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2009
    Messages : 99
    Par défaut
    Bonjour,

    je sais que la requête est erronée et qu'il faut rajouter group by.
    La requête initiale(écrite dans le programme ne contient pas de TAB_COMPT_TEST.ROWID) mais celle renvoyée dans le fichier alert la rajoute.
    ce problème est apparu seulement avec les programmes delphi sous 12c, sous la 11g il y avait pas ca.

    Merci

  5. #5
    Expert confirmé
    Avatar de popo
    Homme Profil pro
    Analyste programmeur Delphi / C#
    Inscrit en
    Mars 2005
    Messages
    2 972
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste programmeur Delphi / C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 2 972
    Par défaut
    Je ne suis pas un spécialiste oracle, j'utilise plutôt SQL Serveur.
    Mais ce RowId ressemble beaucoup au champs RowId ajoutée à chaque requête lorsque la base est répliquée.

  6. #6
    Membre très actif
    Profil pro
    Étudiant
    Inscrit en
    Février 2009
    Messages
    99
    Détails du profil
    Informations personnelles :
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2009
    Messages : 99
    Par défaut
    Bonjour,

    il s'agit pas de récuperer le nom de la table mais c'est un champ de la table qui porte le même nom que la table.

    d'apres mes recherches sur le net, rowid dans oracle correspond à la propriété readonly de la table dans delphi. Veuillez me confirmer que c'est vrai? quel est l'inconvénient de mettre la propriété de readonly du composant table à true?

    Merci

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 14/10/2014, 17h28
  2. Réponses: 0
    Dernier message: 11/06/2014, 09h50
  3. Réponses: 10
    Dernier message: 13/01/2012, 09h22
  4. impression delphi avec oracle
    Par mandymoor dans le forum Bases de données
    Réponses: 0
    Dernier message: 19/07/2009, 09h39
  5. Réponses: 7
    Dernier message: 09/04/2008, 04h13

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