Editar datos de una geodatabase no versionada en Oracle con SQL
Puede utilizar SQL para actualizar, insertar datos y eliminar datos de tablas no versionadas en la geodatabase si no participan en el comportamiento de la geodatabase. Consulte ¿Qué tipo de datos puede editarse con SQL? para obtener información sobre los tipos de datos y comportamiento de la base de datos que no puede editar con SQL.
Todos los datos que se registran con la geodatabase tiene una columna (fila Id.) de Id. de objeto mantenida por el sistema, única y que no es nula. Cuando utiliza SQL para insertar registros en las tablas no versionadas en la geodatabase, debe proporcionar un valor único para el Id. de objeto.
Utilice la función next_row_id del paquete sde.version_user_ddl para generar un valor nuevo y único para el Id. de objeto.
La función next_row_id utiliza dos parámetros: Id. de registro y propietario. El propietario es el nombre del usuario que posee la tabla. El Id. de registro surge a partir de la tabla TABLE_REGISTRY del sistema de ArcSDE. Con el nombre del propietario de la tabla y el Id. de registro, se puede crear una declaración SQL para completar la columna de Id. de objeto.
El próximo Id. de objeto disponible no es necesariamente el próximo número secuencial después del último Id. de objeto insertado. Los Id. de objeto para algunas aplicaciones cliente se asignan en lotes, así que el próximo Id. de objeto disponible puede ser muchos números más que el último que usó. Además, se devuelve cualquier Id. de objeto que no se usó del lote al grupo de valores disponibles, lo que significa que el valor del próximo Id. de objeto disponible posiblemente puede ser un número menor que el último que insertó.
-
Inicie sesión en la base de datos desde un editor de SQL como SQL*Plus.
Asegúrese de iniciar sesión en la base de datos como un usuario que tiene permiso para editar los datos.
-
Haga una consulta en la tabla TABLE_REGISTRY para determinar el Id. de registro de la tabla de negocios en la cual quiere insertar una fila.
En este ejemplo, la tabla que se editará es la tabla de negocios de la clase de entidad STREAMS y el propietario es ENG2.
SELECT registration_id FROM sde.table_registry WHERE table_name = 'STREAMS' and owner = 'ENG2'; REGISTRATION_ID 131
El Id. de registro para la tabla ENG2.STREAMS es 131.
-
Incluya la función sde.version_user_ddl.next_row_id con el nombre de propietario y el Id. de registro en la declaración INSERT para insertar el próximo valor disponible en la columna de Id. de objeto.
En este ejemplo, un segmento de línea de ST_Geometry se inserta en la clase de entidad STREAMS.
INSERT INTO eng2.streams (OBJECTID,NAME,SHAPE) VALUES (sde.version_user_ddl.next_row_id('ENG2', 131), 'TRANQUIL', sde.ST_GEOMETRY('linestring (750 150, 750 750)', 4) );
- Puede continuar editando o, si ya terminó, puede confirmar las modificaciones en la base de datos.