Определение
RowID_Name получает таблицу в качестве входного параметра и возвращает имя поля ObjectID (или RowID) таблицы. Это удобно, если необходимо выполнить неверсионное редактирование в таблице базы геоданных с помощью SQL; необходимо знать имя поля ObjectID, чтобы добавить в него значения.
Если таблица не зарегистрирована в базе геоданных, будет возвращено сообщение об ошибке или нулевое значение.
Синтаксис
<geodatabase administrator schema>.rowid_name(<table owner>, <table name>)
В большинстве баз геоданных для схемы администратора базы геоданных используется sde. Однако для баз геоданных с dbo-схемой в SQL Server это dbo, а для баз геоданных с пользовательской схемой в Oracle – это имя пользовательской схемы.
Тип возвращаемого значения
Строка
Примеры
Ниже приведены примеры использования функции RowID_Name в базе данных каждого типа.
Первый пример выполняет запрос для получения имени столбца RowID, зарегистрированного в таблице customers, владельцем которой является mgr.
Второй пример выполняет запрос для получения имени столбца RowID, зарегистрированного в таблице inventory. Однако таблица inventory не зарегистрирована в базе геоданных; поэтому не имеет зарегистрированного столбца RowID.
Db2
VALUES sde.rowid_name('MGR', 'CUSTOMERS')
ID
VALUES sde.rowid_name('MGR', 'INVENTORY')
Application raised error or warning with diagnostic text:
"MGR.INVENTORY is not registered to the geodatabase".
Oracle
SELECT sde.gdb_util.rowid_name('MGR', 'CUSTOMERS') FROM DUAL;
SDE.GDB_UTIL.ROWID_NAME('MGR', 'CUSTOMERS') --------------------------------------------------
ID
SELECT sde.gdb_util.rowid_name('MGR', 'INVENTORY') FROM DUAL;
SDE.GDB_UTIL.ROWID_NAME('MGR', 'INVENTORY') ----------------------------------------------------
SELECT sde.gdb_util.rowid_name('MGR', 'INVENTORY') FROM DUAL;
*
ERROR at line 1:
ORA-20220: Class MGR.INVENTORY not registered to the Geodatabase.
PostgreSQL
SELECT sde.rowid_name('mgr', 'customers');
id
SELECT sde.rowid_name('mgr', 'inventory');
NOT REGISTERED
SQL Server
SELECT sde.rowid_name('mgr', 'customers');
id
SELECT sde.rowid_name('mgr', 'inventory');
NULL