ThinkGeo.com    |     Documentation    |     Premium Support

ORA-01747 error

Hello everyone,


I try to load data from an Oracle Database but I've got an ORA-01747 error but I can't find where I did the mistake :


        private void InitializeAdminLayer()
        {
            string connectString = "User ID=sebastien;Password=sebastien;Data Source=t_tosca;";
            OracleFeatureLayer oracleLayer = new OracleFeatureLayer(connectString, "TEST_CARTO", "ID_UNIT");

            oracleLayer.ZoomLevelSet.ZoomLevel01.DefaultAreaStyle = AreaStyles.Country1;
            oracleLayer.ZoomLevelSet.ZoomLevel01.DefaultLineStyle = LineStyles.Utility1;
            oracleLayer.ZoomLevelSet.ZoomLevel01.DefaultPointStyle = PointStyles.City1;
            oracleLayer.ZoomLevelSet.ZoomLevel01.ApplyUntilZoomLevel = ApplyUntilZoomLevel.Level20;  

            LayerOverlay overlay = new LayerOverlay("Oracle");
            overlay.Layers.Add("oracleLayer",oracleLayer);
            if(!Map1.CustomOverlays.Contains("Oracle"))
                Map1.CustomOverlays.Add(overlay);

            string[] columns = new string[] {};

            oracleLayer.Open();
            int count = oracleLayer.QueryTools.GetCount(); // get 1 => good result (one entry in the DB)
            Collection<Feature> collection = oracleLayer.QueryTools.GetAllFeatures(columns); // get ORA-01747 error
            oracleLayer.Close();

        }

And this is my database table :



ID_UNIT         NUMBER(10,0)
GEOMETRY SDO_GEOMETRY() 


Thanks in advance for your help



Hello again,


Is my table has to be specific ? A specific name for the spatial column, an index, a specific ID column, ...


Is it possible to see the SQL query of the method I use ?


 


FYI, when I show the oracle layer, nothing is display except two messages :



        
  • An item with the same key has already added

  •     
  • Object reference not set to an instance of an object


 


Thanks in advance.


 


EDIT : I use Wireshark (a network protocol analyzer) to find the sql query and I found this (for the method GetAllFeatures()) : 


SELECT tableName..GET_WKB() as ,IDADMINUNIT1 FROM genericnew.ADMIN_UNIT_1 tableName


The column containing the spatial data is missing. How may I correct that?



Hello again (for the last time),


I found my mistake. The account that I use in the connection string didn't have the grant on the view USER_SDO_GEOM_METADATA so MapSuite didn't find the geometry column !



Pierre-Antoine, 
  
 Glad to see that you have solved your problem, so if you still encounter any problem, please let me know. 
  
 Thanks, 
  
 Johnny

Hi, I have the same problem and i grant permission to USER_SDO_GEOM_METADATA view, but the problem is not solved.. Pierre could you tell me how you grant the permision or how you grant this???


This is the query string wireshark catch :


SELECT allColumns.COLUMN_NAME, geomMetaData.SRID FROM ALL_TAB_COLUMNS allColumns, USER_SDO_GEOM_METADATA geomMetaData WHERE allColumns.TABLE_NAME= TABLE_NAME  AND allColumns.DATA_TYPE='SDO_GEOMETRY' AND allColumns.TABLE_NAME= geomMetaData.TABLE_NAME .AND allColumns.owner=''



abraham, 
  
 I have answered this question in your another post, please have a look at it. 
  
 Regards, 
  
 Gary