ArcGIS Desktop

  • ArcGIS Pro
  • ArcMap

  • My Profile
  • Help
  • Sign Out
ArcGIS Desktop

ArcGIS Online

The mapping platform for your organization

ArcGIS Desktop

A complete professional GIS

ArcGIS Enterprise

GIS in your enterprise

ArcGIS Developers

Tools to build location-aware apps

ArcGIS Solutions

Free template maps and apps for your industry

ArcGIS Marketplace

Get apps and data for your organization

  • Documentation
  • Support
Esri
  • Sign In
user
  • My Profile
  • Sign Out

ArcMap

  • Home
  • Get Started
  • Map
  • Analyze
  • Manage Data
  • Tools
  • Extensions

Next_RowID

  • Definition
  • Syntax
  • Return type
  • Examples

Definition

Next_RowID takes a table that is registered with the geodatabase as an input parameter and returns the next value for the ObjectID (RowID) field.

You can use this value when you are inserting a row to the table using SQL.

An error is returned if the table you specify is not registered with the geodatabase.

Syntax

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

In most geodatabases, the geodatabase administrator schema is sde. However, it is dbo in dbo-schema geodatabases in SQL Server, and in user-schema geodatabases in Oracle, it is the name of the user's schema.

Return type

Integer

Examples

The following are examples of using the Next_RowID function in each supported database type.

The first example inserts a record into the applicants table owned by webman, and calls the Next_RowID procedure to insert a value to the RowID field (ObjectID). In Db2 and SQL Server, you must call the Next_RowID procedure first to get a value for the ObjectID field, then use that value in the insert statement.

The second example attempts to insert a record into the logins table, calling the Next_RowID procedure to insert a value to a field named ID. However, the logins table is not registered with the geodatabase; therefore, an error is returned.

Db2

In Db2, stored procedures cannot be used directly in an insert statement. Therefore, you must call the Next_RowID procedure to get the value for the next RowID, then use that number in the insert statement.

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

In this example, the table is not registered with the geodatabase, so no ID value is returned:

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

When using the Next_RowID stored procedure in SQL Server, you must obtain the next row ID value, then insert that value when you insert a record to the table.

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.

If you try to run the Next_RowID procedure for a table that is not registered with the geodatabase, you receive an error message, as shown in the following example:

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.

Related topics

  • RowID_Name

ArcGIS Desktop

  • Home
  • Documentation
  • Support

ArcGIS

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

About Esri

  • About Us
  • Careers
  • Esri Blog
  • User Conference
  • Developer Summit
Esri
Tell us what you think.
Copyright © 2021 Esri. | Privacy | Legal