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 :
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
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
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
@+
Antoine
Partager