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

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

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

Если для неверсионной таблицы, предназначенной для редактирования с помощью SQL, включено архивирование, можно вместо самой таблицы редактировать ее архивное представление. Представление автоматически обновит конкретные поддерживаемые ArcGIS поля. См. раздел Что такое архивное представление и связанные с ним разделы для получения подробной информации.

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

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

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

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

  2. Выполните выражение SQL, аналогичное следующему, чтобы вызвать встроенную процедуру Next_RowID.

    Встроенная процедура Next_RowID получает в качестве входных параметров владельца таблицы и имя таблицы, чтобы вернуть следующее значение ObjectID для таблицы.

    В данном примере, GIS – это владелец таблицы, FACTORIES – имя таблицы, и три вопросительных знака обозначают три параметра, которые будут возвращены: ROWID, MSGCODE и MESSAGE.

    CALL SDE.next_rowid('GIS','FACTORIES',?,?,?)
    Value of output parameters
    -----------------------------
    
    Parameter Name : O_ROWID
    Parameter Value : 18
    
    Parameter Name : O_MSGCODE
    Parameter Value : 0
    
    Parameter Name : O_MESSAGE
    Parameter Value : Procedure successfully
    completed.
    
    Return Status = 1
    
  3. Добавьте запись в таблицу, используя значение O_ROWID, полученное в результате предыдущего вызванного выражения.
    INSERT INTO FACTORIES
    (OBJECTID,NAME,SHAPE)
    VALUES(
    18,
    'megafactory',
    db2gse.ST_PolyFromText('POLYGON( ( 50 31, 54 31, 54 29, 50 29, 50 31) )',
    db2gse.coordref()..srid(4326))
    );
    
  4. Вы можете продолжить редактирование или, если вы закончили редактирование, внести изменения в базу данных (операция COMMIT).

Если таблица содержит поле GUID или Global ID, необходимо также указать уникальное значение в этом поле. Подробнее см. Next_GlobalID.

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

5/25/2014