Редактирование неверсионных данных в базе геоданных в Oracle с использованием SQL

Вы можете использовать SQL для обновления, добавления и удаления данных в неверсионных таблицах базы геоданных, если они не участвуют в объектах поведения базы геоданных. Сведения о типах данных и поведении базы геоданных, которые нельзя редактировать с помощью SQL, доступны в разделе Какие типы данных могут редактироваться с помощью SQL?.

Все данные, которые были зарегистрированы в базе геоданных, имеют уникальное непустое управляемое системой поле ObjectID (Row ID). Вам необходимо предоставить уникальное значение для ObjectID, когда вы используете SQL для добавления записей в неверсионные таблицы в базе геоданных.

Используйте функцию Next_RowID из пакета sde.gdb_util, чтобы создать новое, уникальное значение для ObjectID.

Функция Next_RowID использует два параметра: владелец таблицы и имя таблицы. Зная владельца таблицы и имя таблицы, можно создать выражение SQL для заполнения поля ObjectID.

ПримечаниеПримечание:

Следующее доступное значение ObjectID необязательно является следующим последовательным числом после последнего добавленного ObjectID. ObjectID для некоторых пользовательских приложений присваивается пакетно, поэтому следующий доступный ObjectID может быть намного больше, чем последний использованный идентификатор. Также, любые неиспользованные идентификаторы ObjectID из пакетов возвращаются в общее множество доступных значений, что означает, что следующее доступное значение ObjectID может на самом деле быть меньшим числом, чем последний добавленный вами идентификатор.

Шаги:
  1. Войдите в базу данных из редактора SQL, например, SQL*Plus.

    Выполните вход как пользователь с правами доступа на редактирование данных.

  2. Включите функцию sde.gdb_util.next_rowid с именами владельца и таблицы в выражение INSERT, чтобы заполнить поле ObjectID следующим доступным значением.

    В данном примере линейный сегмент ST_Geometry добавляется в класс объектов STREAMS.

    INSERT INTO eng2.streams (OBJECTID,NAME,SHAPE) VALUES
    (sde.gdb_util.next_rowid('ENG2', 'STREAMS'), 
    'TRANQUIL', 
    sde.ST_GEOMETRY('linestring (750 150, 750 750)', 4) 
    );
    
  3. Вы можете продолжить редактирование или, если вы закончили редактирование, внести изменения в базу данных (операция COMMIT).

Связанные темы

9/11/2013