ArcGIS Desktop

  • ArcGIS Pro
  • ArcMap

  • My Profile
  • Справка
  • Sign Out
ArcGIS Desktop

ArcGIS Online

Картографическая платформа вашей организации

ArcGIS Desktop

Полноценная профессиональная ГИС

ArcGIS Enterprise

ГИС предприятия

ArcGIS Developers

Инструменты для встраивания приложений с местоположениями

ArcGIS Solutions

Бесплатные шаблоны карт и приложений для отрасли

ArcGIS Marketplace

Получение приложения и данных для вашей организации.

  • Документация
  • Поддержка
Esri
  • Войти
user
  • Мой профиль
  • Выход

ArcMap

  • На главную
  • Начало работы
  • Карта
  • Анализ
  • Управление данными
  • Инструменты
  • Дополнительные модули

Next_RowID

  • Определение
  • Синтаксис
  • Тип возвращаемого значения
  • Примеры

Определение

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

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

Если выбранная таблица не зарегистрирована в базе геоданных, будет возвращена ошибка.

Синтаксис

<geodatabase administrator schema>.next_rowid (<table owner>, <table name>)

В большинстве баз геоданных для схемы администратора базы геоданных используется sde. Однако для баз геоданных с dbo-схемой в SQL Server это dbo, а для баз геоданных с пользовательской схемой в Oracle – это имя пользовательской схемы.

Тип возвращаемого значения

Целое

Примеры

Следующие примеры демонстрируют использование функции Next_RowID для каждого поддерживаемого типа базы данных.

В первом примере в таблицу applicants, владельцем которой является webman, добавляется запись, и вызывается процедура Next_RowID, чтобы добавить значение в поле RowID (ObjectID). В Db2 и SQL Server, вам необходимо сначала вызвать процедуру Next_RowID, чтобы получить значение для поля ObjectID, а затем использовать полученное значение в выражении insert.

Во втором примере производится попытка добавить запись в таблицу logins с помощью вызова процедуры Next_RowID для добавления значения в поле с именем ID. Однако таблица logins не зарегистрирована в базе геоданных; поэтому будет возвращена ошибка.

Db2

В Db2 хранимые процедуры не могут быть использованы напрямую в выражении insert. Поэтому вам необходимо вызвать процедуру Next_RowID, чтобы получить значение следующего RowID, а затем использовать это число в выражении insert.

CALL sde.next_rowid('WEBMAN', 'APPLICANTS', ?, ?, ?);
Value of output parameters
----------------------------
Parameter Name :   O_ROWID
Parameter Value :  30
Parameter Name :   O_MSGCODE
Parameter Value :  0
Parameter Name :   O_MESSAGE
Parameter Value :  Procedure successfully completed.
Return Status = 1
INSERT INTO webman.applicants (objectid, app_name, status)
VALUES
(30, 'Roy Bean', 'active')
The SQL command completed successfully

В данном примере таблица не зарегистрирована в базе геоданных, поэтому не будет возвращено значение ID:

CALL sde.next_rowid('WEBMAN', 'LOGINS', ?, ?, ?);
Value of output parameters
----------------------------
Parameter Name :   O_ROWID Parameter Value :  -
Parameter Name :   O_MSGCODE Parameter Value :  -20169
Parameter Name :   O_MESSAGE Parameter Value :  No SDE ROWID column.
Return Status = 1

Oracle

INSERT INTO webman.applicants (objectid, app_name, status) VALUES
(sde.gdb_util.next_rowid('WEBMAN', 'APPLICANTS'), 'Roy Bean', 'active');
1 row created
COMMIT;
INSERT INTO webman.logins (id, l_name) VALUES 
(sde.gdb_util.next_rowid('WEBMAN', 'LOGINS'), 'maplebutter');
(sde.gdb_util.next_rowid('WEBMAN', 'LOGINS'), 'maplebutter');
 *
ERROR at line 3:
ORA-20220: Class WEBMAN.LOGINS not registered to the Geodatabase.

PostgreSQL

INSERT INTO webman.applicants (objectid, app_name, status) VALUES
(sde.next_rowid('webman', 'applicants'), 'Roy Bean', 'active')
Query returned successfully: 1 row affected, 109 ms execution time.
INSERT INTO webman.logins (id, l_name) VALUES 
(sde.next_rowid('WEBMAN', 'LOGINS'), 'maplebutter')
Notice: Class webman.logins not registered to the Geodatabase.

SQL Server

При использовании встроенной процедуры Next_RowID в SQL Server, вам необходимо сначала извлечь значение следующего идентификатора строки, а затем вставить полученное значение при добавлении записи в таблицу.

DECLARE @myval int EXEC sde.next_rowid 'mgr', 'customers', @myval OUTPUT SELECT @myval "Next RowID";
Next RowID
3188
INSERT INTO webman.applicants (objectid, app_name, status) VALUES
(3188, 'Roy Bean', 'active');
Query returned successfully: 1 row affected, 109 ms execution time.

Если вы попытаетесь запустить процедуру Next_RowID для таблицы, незарегистрированной в базе геоданных, вы получите сообщение об ошибке, как показано в следующем примере:

DECLARE @myval int;
EXEC sde.next_rowid 'mgr', 'inventory', @myval OUTPUT;
SELECT @myval "Next RowID"
Msg 50000, Level 16, State 1, Procedure next_rowid, Line 16
Class inventory not registered to the Geodatabase.

Связанные разделы

  • RowID_Name

ArcGIS Desktop

  • На главную
  • Документация
  • Поддержка

ArcGIS

  • ArcGIS Online
  • ArcGIS Desktop
  • ArcGIS Enterprise
  • ArcGIS
  • ArcGIS Developer
  • ArcGIS Solutions
  • ArcGIS Marketplace

Об Esri

  • О нас
  • Карьера
  • Блог Esri
  • Конференция пользователей
  • Саммит разработчиков
Esri
Расскажите нам, что вы думаете.
Copyright © 2021 Esri. | Конфиденциальность | Правовая информация