C/Proc*C et taille maximum d'un tableau - C - Programmation
Marsh Posté le 09-05-2005 à 13:52:30
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.
Marsh Posté le 10-05-2005 à 11:06:37
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 ?
Marsh Posté le 10-05-2005 à 11:12:08
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 RA_AA794DWID;
}
Marsh Posté le 10-05-2005 à 23:22:29
Citation :
|
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
Marsh Posté le 11-05-2005 à 09:26:55
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
Marsh Posté le 09-05-2005 à 11:34:07
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