Вы можете использовать SQL для обновления, добавления и удаления данных в неверсионных таблицах базы геоданных, если они не участвуют в объектах поведения базы геоданных. Сведения о типах данных и поведении базы геоданных, которые нельзя редактировать с помощью SQL, доступны в разделе Какие типы данных могут редактироваться с помощью SQL?.
Все данные, которые были зарегистрированы в базе геоданных, имеют уникальное непустое управляемое системой поле ObjectID (Row ID). Вам необходимо предоставить уникальное значение для ObjectID, когда вы используете SQL для добавления записей в неверсионные таблицы в базе геоданных. Можете воспользоваться процедурой Next_RowID для вставки значения в поле ObjectID с помощью SQL.
Ниже приводится перечень действий, выполнение которых позволит вам обновить одну строку неверсионной таблицы и вставить ObjectID за один раз. Удобнее всего создать процедуру или пользовательскую программу, чтобы получить идентификаторы ObjectID и обновить ваши данные.
- Войдите в базу данных из редактора SQL, например, DB2 Call Level Interface.
Выполните вход как пользователь с правами доступа на редактирование данных.
- Выполните выражение 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
- Добавьте запись в таблицу, используя значение 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)) );
- Вы можете продолжить редактирование или, если вы закончили редактирование, внести изменения в базу данных (операция COMMIT).
Если таблица содержит поле GUID или Global ID, необходимо также указать уникальное значение в этом поле. Подробнее см. Next_GlobalID.