[Gvsig_usuarios] Problemas al cargar una CONSULTA de OracleSpatialen gvSig. Error ORA-01445:cannot select ROWID from, or sample, a join view without a key-preserved table

Juan Lucas Dominguez Rubio jldominguez en prodevelop.es
Lun Mar 9 14:24:40 CET 2009


Hola, según lo que he dicho, para saber si una vista se va a poder añadir a gvSIG puedes hacer simplemente
 
SELECT ROWID FROM NOMBRE_VISTA
 
desde tu aplicación de gestión de BD. Si no da error, se podrá añadir.
 
Saludos,
 
Juan Lucas Domínguez Rubio
---
Prodevelop SL, Valencia (España)
0° 22' 49.62" W, 39° 28' 25.45" N
Tlf.: 96.351.06.12 -- Fax: 96.351.09.68
http://www.prodevelop.es <http://www.prodevelop.es/> 
---

________________________________

De: Juan Lucas Dominguez Rubio
Enviado el: lun 09/03/2009 14:23
Para: Lista de Usuarios de gvSIG; Lista de Usuarios de gvSIG
Asunto: RE: [Gvsig_usuarios] Problemas al cargar una CONSULTA de OracleSpatialen gvSig. Error ORA-01445:cannot select ROWID from, or sample,a join view without a key-preserved table


Hola, Jorge.

Creo que está sucendiendo lo siguiente:

El driver para Oracle Spatial de gvSIG es capaz de editar tablas. Esto implica que no todas las vistas pueden añadirse a la vista, porque en algunas vistas no hay una identificación 'uno a uno' entre las filas de la vista y las filas de las tablas en las que se basa. Entonces, si alguien editara una de esas vistas e intentara hacer un commit, no estaría claro cual debería ser el contenido de las tablas de las que la vista obtiene la información.

En Oracle, esto equivale a decir que solo se pueden añadir a gvSIG vistas para las que Oracle haya podido generar un campo ROWID. Tal como dice tu mensaje de error, para tu vista no ha sido posible crear un ROWID y por tanto no se puede añadir a gvSIG.

Una posibilidad, que no está implementada, sería abrir ese tipo de vistas en modo solo-lectura (de hecho tu vista lo es, supongo que por ese mismo motivo que he comentado) y dejar que el usuario simplemente echara un vistazo sin modificar nada, pero esto no está hecho todavía, lo siento.

La opción ahora mismo es redefinir tu vista. Creo que si usas los mismos ID para las dos tablas, debería funcionar.


Saludos,


 
Juan Lucas Domínguez Rubio
---
Prodevelop SL, Valencia (España)
0° 22' 49.62" W, 39° 28' 25.45" N
Tlf.: 96.351.06.12 -- Fax: 96.351.09.68
http://www.prodevelop.es <http://www.prodevelop.es/> 
---

________________________________

De: gvsig_usuarios-bounces en runas.cap.gva.es en nombre de Jorge Bellido Diez
Enviado el: lun 09/03/2009 13:14
Para: Lista de Usuarios de gvSIG
Asunto: [Gvsig_usuarios] Problemas al cargar una CONSULTA de OracleSpatialen gvSig. Error ORA-01445:cannot select ROWID from, or sample,a join view without a key-preserved table



Hola, .. estoy intentando cargar una vista de oracle que cruza una tabla geográfica con una tabla alfanumérica pero no me funcionan. Me sale el error: ORA-01445: cannot select ROWID from, or sample, a join view without a key-preserved table

Tengo una tabla con cartografia (TBTEST02) y otra alfanumerica (TBTEST02_DATOS) que contiene la referencia catastral (PROVINCIA,MUNICIPIO,POLIGONO,PARCELA,RECINTO). La clave en tb_parcelas es un campo gid y en la tb_datos son los campos PROVINCIA,MUNICIPIO,POLIGONO,PARCELA,RECINTO. Defino una vista V_TBTEST02 cruzando ambas tablas y presentando los campos.

CREATE VIEW "ADMCARTO"."V_TBTEST02" AS
SELECT ALFA.PROVINCIA,ALFA.MUNICIPIO,ALFA.POLIGONO,ALFA.PARCELA,ALFA.RECINTO,ALFA.DATOTEXTO,ALFA.DATONUMERO,GIS.GID,GIS.GEOMETRY
FROM "ADMCARTO"."TBTEST02_DATOS" ALFA, "ADMCARTO"."TBTEST02" GIS
WHERE ALFA."PROVINCIA" = GIS ."PROVINCIA" and
ALFA."MUNICIPIO" = GIS ."MUNICIPIO" and
ALFA."POLIGONO" = GIS ."POLIGONO" and
ALFA."PARCELA" = GIS ."PARCELA" and
ALFA."RECINTO" = GIS ."RECINTO"
WITH READ ONLY;

Luego añado los respectivos registros a las tablas "MDSYS"."USER_SDO_GEOM_METADATA" y "MDSYS"."ALL_SDO_GEOM_METADATA" tal y como he visto en un correo anterior de esta mismo foro..

INSERT INTO "MDSYS"."USER_SDO_GEOM_METADATA"
("TABLE_NAME","COLUMN_NAME","DIMINFO","SRID")
VALUES('V_TBTEST02','GEOMETRY',"MDSYS"."SDO_DIM_ARRAY"("MDSYS"."SDO_DIM_ELEMENT"('X', 463506.969, 603185.5, .5), "MDSYS"."SDO_DIM_ELEMENT"('Y', 4702558, 4811755, .5)),82337);

INSERT INTO "MDSYS"."ALL_SDO_GEOM_METADATA"
("OWNER","TABLE_NAME","COLUMN_NAME","SRID")
VALUES ('ADMCARTO','V_TBTEST02','GEOMETRY',82337);

Voy a gvSig, me conecto a la BD de Oracle,.. Veo en el listado de tablas mi consulta pero al seleccionarla, me sale el error:  ORA-01445: cannot select ROWID from, or sample, a join view without a key-preserved table

Alguien me podría echar una ayudita,.. Mil gracias. Jorge


Un cordial saludo;



··················································································
Jorge Bellido



_______________________________________________
gvSIG_usuarios mailing list
gvSIG_usuarios en runas.cap.gva.es

Para ver histórico de mensajes, editar sus preferencias de usuario o darse de baja en esta lista, acuda a la siguiente dirección:

http://runas.cap.gva.es/mailman/listinfo/gvsig_usuarios


------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: http://runas.cap.gva.es/pipermail/gvsig_usuarios/attachments/20090309/ce32c898/attachment.htm


Más información sobre la lista de distribución gvSIG_usuarios