ArcGIS Desktop

  • ArcGIS Pro
  • ArcMap

  • My Profile
  • 帮助
  • Sign Out
ArcGIS Desktop

ArcGIS Online

专为贵组织打造的制图平台

ArcGIS Desktop

全面的专业性 GIS

ArcGIS Enterprise

面向企业的 GIS

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。但是,在 SQL Server dbo 方案地理数据库中,则为 dbo;而在 Oracle 用户方案地理数据库中,则为用户方案的名称。

返回类型

整数

示例

下面是在每种支持的数据库类型中使用 Next_RowID 函数的示例。

第一个示例将记录插入由 webman 拥有的 applicants 表,并调用 Next_RowID 过程将值插入 RowID 字段 (ObjectID) 中。在 Db2 和 SQL Server 中,必须首先调用 Next_RowID 过程获取 ObjectID 字段的值,然后在插入语句中使用该值。

第二个示例尝试将记录插入 logins 表,调用 Next_RowID 过程将值插入名为 ID 的字段。但是,logins 表没有注册到地理数据库;因此,将返回一条错误。

Db2

在 Db2 中,不能在插入语句中使用存储过程。因此,必须调用 Next_RowID 过程获取下一 RowID 的值,然后在插入语句中使用此编号。

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

在 SQL Server 中使用 Next_RowID 存储过程时,必须获取下一行 ID 值,然后在将记录插入到表时插入该值。

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. | 隐私政策 | 法律声明