[Oracle10g Spatial] Problème : Trop de curseurs ouverts
Bonjour à toutes et à tous !
Via un programme C#, j'exécute une requête spatial sur Oracle qui ne renvoit qu'un seule enregistrement (ou 0) puisque elle utilise la fonction SDO_NN.
Cette requête à pour but, à partir de la longitude/latitude d'un point GPS, de trouver la rue la plus proche dans un rayon de 20 mètres :
La requete est comme cela :
Code:
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
| select
CLETRONC, LONGUEUR
from RUES
where SDO_NN(
GEOM,
MDSYS.SDO_GEOMETRY(
2001,
41014,
MDSYS.SDO_POINT_TYPE(
:latitude,
:longitude,
null),
null,
null),
'SDO_NUM_RES = 1') = 'TRUE'
and SDO_GEOM.SDO_DISTANCE(
GEOM,
MDSYS.SDO_GEOMETRY(
2001,
41014,
MDSYS.SDO_POINT_TYPE(
:latitude2,
:longitude2,
null),
null,
null),
0.001) < 20 |
La requête est paramétrée et donc j'initialise tous les paramètres (en fait les latitude/longitude des points). Elle est exécuté en boucle (en fait pour chaque point GPS - environ 11000) et il arrive un moment ou elle lève une exception : ORA-01000: maximum open cursors exceeded
Il me semble que le nombre de curseurs peut être dépassé quand on a une infinité de résultats... la j'en ai 0 ou 1... Oracle n'a pas l'air de les fermer puisque, c'est le fait de tourner en boucle qui fait ça ! Je ne comprends pas trop car j'utilise cette requête depuis un bon bout de temps et c'est la première fois que je rencontre ce soucis !
Si vous avez une idée ou une suggestion... Merci :roll:
@+
Antoine