Definition
"Next_RowID" gibt anhand einer in der Geodatabase registrierten Tabelle als Eingabeparameter den nächsten Wert für das ObjectID-Feld (RowID) zurück.
Wenn Sie mithilfe von SQL eine Zeile in die Tabelle einfügen, können Sie diesen Wert verwenden.
Falls die angegebene Tabelle nicht in der Geodatabase registriert ist, wird ein Fehler zurückgegeben.
Syntax
<geodatabase administrator schema>.next_rowid (<table owner>, <table name>)
Bei den meisten Geodatabases lautet das Geodatabase-Administrator-Schema "sde". Im Falle von DBO-Schema-Geodatabases in SQL Server lautet das Schema "dbo", und bei Benutzerschema-Geodatabases in Oracle wird der Name des Benutzerschemas verwendet.
Rückgabetyp
Ganze Zahl
Beispiele
Nachfolgend finden Sie Beispiele für die Verwendung der Funktion "Next_RowID" bei allen unterstützten Datenbanktypen.
Im ersten Beispiel wird ein Datensatz in die Tabelle "applicants" eingefügt, die im Besitz von "webman" ist. Außerdem wird die Prozedur "Next_RowID" abgerufen, um dem RowID-Feld (ObjectID) einen Wert hinzuzufügen. In Db2 und SQL Server muss zunächst die Prozedur "Next_RowID" zum Bereitstellen eines Wertes für das ObjectID-Feld aufgerufen werden. Verwenden Sie anschließend diesen Wert in der Anweisung zum Einfügen.
Im zweiten Beispiel wird der Versuch unternommen, einen Datensatz in die Tabelle "logins" einzufügen. Die Prozedur "Next_RowID" wird zum Einfügen eines Wertes in ein Feld mit der Bezeichnung "ID" aufgerufen. Die Tabelle "logins" ist aber nicht in der Geodatabase registriert. Folglich wird ein Fehler zurückgegeben.
DB2
Gespeicherte Prozeduren können in Db2 nicht direkt in einer Anweisung zum Einfügen verwendet werden. Daher muss die Prozedur "Next_RowID" zum Bereitstellen des Wertes für die nächste RowID aufgerufen werden. Verwenden Sie anschließend diese Zahl in der Anweisung zum Einfügen.
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 diesem Beispiel ist die Tabelle nicht in der Geodatabase registriert. Es wird also kein ID-Wert zurückgegeben:
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
Beim Verwenden der gespeicherten Prozedur "Next_RowID" in SQL Server müssen Sie den nächsten Zeilen-ID-Wert abrufen und anschließend diesen Wert einfügen, falls Sie einen Datensatz in die Tabelle einfügen.
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.
Wenn Sie versuchen, die Prozedur "Next_RowID" für eine Tabelle auszuführen, die nicht in der Geodatabase registriert ist, erhalten Sie eine Fehlermeldung, wie im folgenden Beispiel dargestellt:
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.