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

 C Discussion :

sqlca.sqlerrd[1] et sqlca.sqlerrd[2]


Sujet :

C

  1. #1
    Membre à l'essai
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Septembre 2006
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Canada

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 12
    Points : 14
    Points
    14
    Par défaut sqlca.sqlerrd[1] et sqlca.sqlerrd[2]
    Je travail sur un système qui a plus de 10 ans. Le système d'exploitation est Linux sur une application fait en PRO-C.
    Lorsque je Retrograte un programme dans environnement unitaire.
    Si j'exécute ce programme le traitement s'effectue correctement. Par contre si je compile le programme sans rien modifier dans le code. Le résultat n'est pas le même.

    Lorsque le programme FETCH. Celui-ci retourne aucune rangé. Et pourtant après différent test. Le SQL retourne des rangés mais pas quand le SQL est utilisé dans un FETCH.
    Par contre il y a une nuance puisse que c'est les indicateurs SQLCA.SQLERRD qui sont erronée.
    EXEMPLE
    Si le SQL retourne 27 rangés.
    Lors de l'exécution adéquate les indicateur sont
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SQLCA.SQLERRD[1] = 0
    SQLCA.SQLERRD[2] = 27
    SQLCA.SQLcode    = NULL
    Par contre, durant une exécution qui ne retourne aucune rangé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SQLCA.SQLERRD[1] = 27
    SQLCA.SQLERRD[2] = 0
    SQLCA.SQLcode    = NULL
    Les programmes utilise l'indicateur SQLCA.SQLERRD[2] pour valider si des rangés on été sélectionné par le FETCH

    La documentation ORACLE confirme l'indicateur SQLCA.SQLERRD[1] sera utilisé pour le futur et SQLCA.SQLERRD[2] doit contenir le nombre de ranger "FETCHER"
    Pourquoi le nombre de rangé FETCHER ce retrouve dans SQLCA.SQLERRD[1] et non dans SQLCA.SQLERRD[2]

  2. #2
    Membre à l'essai
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Septembre 2006
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Canada

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 12
    Points : 14
    Points
    14
    Par défaut Solution au problème
    Sur notre serveur nous avions 2 SQLCA.H dans 2 répertoire.
    Un SQLCA.H est utilisé pour Oracle et l'autre pour le précompilateur.

    Mais Voilà, la définition du tableau pour SQLERRD était en "INT" et l'autre fichier en "LONG"

    Donc il y avait débordement dans le table de SQLERRD.

    Cette erreur a apparue lors de l'installation d'une patch.

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

Discussions similaires

  1. SQLCA : encodage du noms des tables ?
    Par Invité dans le forum Administration
    Réponses: 1
    Dernier message: 26/08/2011, 22h22
  2. [sql Server 2005] Sqlca.sqlcode
    Par ploukinet dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 03/08/2007, 12h00
  3. [Pro*C++] sqlca already defined
    Par Marthym dans le forum Oracle
    Réponses: 2
    Dernier message: 07/12/2005, 13h31

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