Определение
Next_GlobalID получает в качестве входного параметра таблицу, зарегистрированную в базе геоданных, и возвращает следующее значение global ID.
Вы можете использовать это значение при добавлении строки в таблицу с помощью SQL.
Поле globalID добавляется, чтобы позволить таблице участвовать в репликации базы геоданных и для автономного картографирования.
Если входная таблица не зарегистрирована в базе геоданных, будет возвращена ошибка.
Синтаксис
<geodatabase administrator schema>.next_globalid (<table owner>, <table name>)
В большинстве баз геоданных для схемы администратора базы геоданных используется sde. Однако для баз геоданных с dbo-схемой в SQL Server это dbo, а для баз геоданных с пользовательской схемой в Oracle – это имя пользовательской схемы.
Тип возвращаемого значения
Строка
Примеры
Следующие примеры демонстрируют использование функции Next_GlobalID в базах данных, в которых это поддерживается.
Пример для каждой базы данных добавляет запись в таблицу sitings, владельцем которой является buse, и вызывает процедуру Next_RowID, чтобы добавить значение в поле ObjectID, и процедуру Next_GlobalID, чтобы добавить значение в поле global ID.
Db2
Поскольку таблицы базы геоданных содержат непустое поле ObjectID, вам необходимо сначала получить значение, которое будет добавлено в это поле. В приведенном примере следующее значение RowID получено для поля ObjectID (698), затем запись со следующим значением RowID добавлена в таблицу, и функция Next_GlobalID использована для того, чтобы добавить значение в поле GlobalID.
--Get the next ObjectID value.
CALL sde.next_rowid('BUSE', 'SITINGS', ?, ?, ?);
Value of output parameters
Parameter Name : O_ROWID
Parameter Value : 698
Parameter Name : O_MSGCODE
Parameter Value : 0
Parameter Name : O_MESSAGE
Parameter Value : Procedure successfully completed.
Return Status = 1
--Insert the ObjectID from the previous statement to the objectid field.
--Use the Next_GlobalID function to insert a value to the globalid field.
INSERT INTO buse.sitings (objectid, globalid, mon_type)
VALUES (
698,
sde.next_globalid,
'golem'
);
The SQL command completed successfully
Oracle
Можно включить утилиту Next_GlobalID в выражение insert для вставки следующего доступного значения ID. В следующем примере утилита Next_RowID используется для вставки значения в поле ObjectID, которое представлено во всех таблицах баз геоданных и должно быть заполнено.
INSERT INTO buse.sitings (objectid, globalid, mon_type) VALUES ( sde.gdb_util.next_rowid('BUSE', 'SITINGS'), sde.gdb_util.next_globalid, 'golem' );
1 row created
PostgreSQL
Можно включить функцию Next_GlobalID в выражение insert для вставки следующего доступного значения ID. В следующем примере функция Next_RowID используется для вставки значения в поле ObjectID, которое представлено во всех таблицах баз геоданных и должно быть заполнено.
INSERT INTO buse.sitings (objectid, globalid, mon_type) VALUES ( sde.next_rowid('buse', 'sitings'), sde.next_globalid(), 'golem' );
Query returned successfully: 1 row affected, 109 ms execution time.
SQL Server
Next_GlobalID и Next_RowID – это сохраненные процедуры, которые должны запускаться вне выражения INSERT для получения следующих значений ID. Обе они хранятся в схеме базы геоданных администратора. В следующем примере администратор базы геоданных – sde. Значения, возвращаемые этими процедурами, используются в выражении INSERT с целью обновления таблицы sitings.
--Get the next ObjectID value. DECLARE @oid int EXEC sde.next_rowid 'buse', 'sitings', @oid OUTPUT SELECT @oid "ObjectID value";
ObjectID value 98765
--Get the next global ID value. DECLARE @gid uniqueidentifier EXEC sde.next_globalid @gid OUTPUT SELECT @gid "ID value";
ID value 0D5D0605-8954-4A65-B86C-D2DA96C2D0C5
--Insert a row to the sitings table. INSERT INTO buse.sitings (objectid, globalid, mon_type) VALUES ( 98765, '0D5D0605-8954-4A65-B86C-D2DA96C2D0C5', 'golem'
);