Problème lecture types composés (+ SPATIAL) avec ODBC ORACLE
Bonjour,
j'ai un problème pour utiliser le driver ODBC d'Oracle sur des objets complexes en C#.
A la base, je veux lire des objets Oracle Spatial (SDO_GEOMETRY).
J'arrive à accéder aux éléments simples de l'objet (SDO_GTYPE) mais je n'arrive pas à lire les sous objets SDO_ELEM_INFO et SDO_ORDINATES qui sont de types SDO_ELEM_INFO_ARRAY et SDO_ORDINATE_ARRAY (qui eux mêmes sont des alias pour VARRAY (1048576) of NUMBER).
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
|
string queryString = "select l.geometrie.SDO_ELEM_INFO from lignes l;";
using (OdbcConnection connection = new OdbcConnection(connectString))
{
connection.Open();
try
{
OdbcCommand command = new OdbcCommand(queryString);
command.Connection = connection;
command.CommandType = System.Data.CommandType.Text;
OdbcDataReader reader = command.ExecuteReader();
while (reader.Read())
{
decimal[] d = (decimal[])reader.GetValue(0);
}
}
catch
{
}
} |
Lorsque j'execute la fonction read j'obtiens l'exception suivante :
Citation:
"ERROR [HY000] [Oracle][ODBC][Ora]ORA-24359: OCIDefineObject n'a pas été appelé pour un type d'objet ou une référence"
Ce qui est très étonnant, c'est que lorsque j'utilise une autre méthode pour lire Oracle ( les objets OracleConnection, OracleCommand et OracleDataReader de la librairie Oracle.DataAccess ), ce même code marche.
Néanmoins je préfèrerais utiliser ODBC plutôt que le client de la DLL Oracle.DataAccess.
D'une manière générale, j'aimerais savoir comment lire les objets "complexes" avec ODBC.
Je vous remercie par avance pour votre aide.