Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
501 connectés 

  FORUM HardWare.fr
  Programmation
  C

  C/Proc*C et taille maximum d'un tableau

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

C/Proc*C et taille maximum d'un tableau

n°1076083
zefennec
Posté le 09-05-2005 à 11:34:07  profilanswer
 

Bonjour,  
 
j'ai quelques soucis sur un tableau en ProC
J'ai repris pour maintenance un programme ancien pour redimensionner un tableau.
Le prog déclare un curseur sur une table et fait un fetch dans le tableau de long.
La volumétrie de la table augmentant, j'ai voulu passer la taille du tableau de 60000 à 80000.
 
Et là, le contenu du tableau est complètement farfelu.
Je soupçonne un dépassement de capacité ou une saleté du genre...
 
La taille d'un tableau est-elle limitée ( à 2 puissance 16 éléments, par exemple ?)
Comment contourner le pb (autrement qu'en me débrouillant pour faire le fetch dans deux tableaux) ?
 
merci d'avance
 
Steph

mood
Publicité
Posté le 09-05-2005 à 11:34:07  profilanswer
 

n°1076269
Tarabiscot​e
Posté le 09-05-2005 à 13:52:30  profilanswer
 

Ton tableau ne rentre peut-être pas entièrement dans la pile.
 
Essayes d'utiliser un pointeur en faisant un malloc pour voir si ça marche mieux.

n°1077453
zefennec
Posté le 10-05-2005 à 11:06:37  profilanswer
 

bon, en fait j'ai fait un test tout bête (remplissage d'un tableau sans utiliser le "fetch" ) et ça fonctionne.
Le pb vient donc d'une limitation du "fetch"
quelqu'un a-t-il une idée ?

n°1077459
skelter
Posté le 10-05-2005 à 11:08:36  profilanswer
 

montre le code, c'est quoi le "fetch" ?

n°1077465
zefennec
Posté le 10-05-2005 à 11:12:08  profilanswer
 

long ORA_AA794DWID[80000] ;
....
 
EXEC SQL DECLARE C3 CURSOR FOR
       SELECT AA794DWID
       FROM
   AA794_TPMMK ;
 
    EXEC SQL OPEN C3;
 
 
    for (;;)
        {
     
           EXEC SQL FETCH C3  INTO :ORA_AA794DWID;
        }

n°1078627
Tarabiscot​e
Posté le 10-05-2005 à 23:22:29  profilanswer
 

Citation :

for (;;)
        {  
     
           EXEC SQL FETCH C3  INTO :ORA_AA794DWID;  
        }



 
ORA_AA794DWID n'est qu'un buffer, rien ne garanti qu'il contienne bien le résultat de la requête après la boucle.
Le traitement du tableau doit donc se faire dans la boucle juste après le fetch.
 
Et utilise sqlca.sqlerrd[2] pour savoir combien de réponses tu as reçues depuis que tu as ouvert ton curseur.
 
Regarde ici, il y a des exemples :
http://etna.int-evry.fr/COURS/BD/DOC_ORACLE/pro*c.html


Message édité par Tarabiscote le 10-05-2005 à 23:24:17
n°1078863
zefennec
Posté le 11-05-2005 à 09:26:55  profilanswer
 

j'utilisais sqlca.sqlerrd[2] et il renvoyait bien la valeur attendue.
Ce que je n'avais pas saisi, c'est que plusieurs fetch se succédaient (suis je bête : il y a un for) et que mon tableau était donc écrasé.
 
Solution : effectivement dans le for, appel d'une procédure qui ajoute le contenu de mon tableau à un tableau global.
 
 
Merci de vos réponses
Steph


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C

  C/Proc*C et taille maximum d'un tableau

 

Sujets relatifs
Taille/Nom d'un fichierInsérer une page php dans un tableau d'une page html
[PB] Tableau de structurescorrespondance tableau deux dimensions - gridlayout [résolu]
Passage d'un tableau dans une url ?!?!Intégrer un tableau dans un CSS
Création d'un tableau dynamique[Java] Trouver un charactère dans un tableau....[résolu]
[VB]Array sur tableau de structureseffet surbrillance sur un tableau ???
Plus de sujets relatifs à : C/Proc*C et taille maximum d'un tableau


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR