Définition
La fonction Next_GlobalID utilise une table inscrite auprès de la géodatabase comme paramètre en entrée et renvoie la valeur d’identifiant global suivante.
Vous pouvez utiliser cette valeur lorsque vous insérez une ligne dans la table en utilisant le langage SQL.
Le champ d'identifiant global est ajouté pour que la table puisse participer à la réplication de géodatabase ou à l'utilisation de cartes hors connexion.
Une erreur est renvoyée si la table en entrée n'est pas enregistrée avec la géodatabase.
Syntaxe
<geodatabase administrator schema>.next_globalid (<table owner>, <table name>)
Dans la plupart des géodatabases, la structure de l'administrateur de géodatabase est la structure sde. Cependant, dans les géodatabases de structure dbo de SQL Server la structure est dbo et dans les géodatabases de structure utilisateur Oracle, la structure est le nom de la structure utilisateur.
Type de retour
Chaîne
Exemples
Les exemples suivants illustrent l'utilisation de la fonction Next_GlobalID dans chaque base de données la prenant en charge.
L’exemple fourni pour chaque base de données insère un enregistrement dans la table sitings détenue par buse, appelle la procédure Next_RowID pour insérer une valeur dans le champ ObjectID, puis la procédure Next_GlobalID pour insérer une valeur dans le champ d’identifiant global.
Db2
Etant donné que les tables de géodatabase incluent un champ ObjectID non nul, vous devez d'abord obtenir une valeur qui sera insérée dans ce champ. Dans l'exemple suivant, la prochaine valeur RowID est obtenue pour le champ ObjectID (698), puis un enregistrement est inséré dans la table. Cet enregistrement inclut la prochaine valeur RowID et la fonction Next_GlobalID permettant d'insérer une valeur dans le champ d'identifiant global.
--Get the next ObjectID value.
CALL sde.next_rowid('BUSE', 'SITINGS', ?, ?, ?);
Value of output parameters
Parameter Name : O_ROWID
Parameter Value : 698
Parameter Name : O_MSGCODE
Parameter Value : 0
Parameter Name : O_MESSAGE
Parameter Value : Procedure successfully completed.
Return Status = 1
--Insert the ObjectID from the previous statement to the objectid field.
--Use the Next_GlobalID function to insert a value to the globalid field.
INSERT INTO buse.sitings (objectid, globalid, mon_type)
VALUES (
698,
sde.next_globalid,
'golem'
);
The SQL command completed successfully
Oracle
Vous pouvez inclure l'utilitaire Next_GlobalID dans l'instruction INSERT pour insérer la prochaine valeur d'identifiant disponible. L'exemple suivant utilise également l'utilitaire Next_RowID pour insérer une valeur dans le champ ObjectID présent dans toutes les tables de géodatabase. Il est obligatoire de le renseigner.
INSERT INTO buse.sitings (objectid, globalid, mon_type) VALUES ( sde.gdb_util.next_rowid('BUSE', 'SITINGS'), sde.gdb_util.next_globalid, 'golem' );
1 row created
PostgreSQL
Vous pouvez inclure la fonction Next_GlobalID dans l'instruction INSERT pour insérer la prochaine valeur d'identifiant disponible. L'exemple suivant utilise également la fonction Next_RowID pour insérer une valeur dans le champ ObjectID présent dans toutes les tables de géodatabase. Il est obligatoire de le renseigner.
INSERT INTO buse.sitings (objectid, globalid, mon_type) VALUES ( sde.next_rowid('buse', 'sitings'), sde.next_globalid(), 'golem' );
Query returned successfully: 1 row affected, 109 ms execution time.
SQL Server
Next_GlobalID et Next_RowID sont des procédures stockées qui doivent être exécutées en dehors de l’instruction INSERT pour obtenir les valeurs d’identifiant suivantes. Les deux procédures sont stockées dans la structure de l'administrateur de géodatabase. Dans l'exemple suivant, l'administrateur de géodatabase est sde. Les valeurs renvoyées par les procédures stockées sont utilisées dans l'instruction INSERT pour mettre à jour la table sitings.
--Get the next ObjectID value. DECLARE @oid int EXEC sde.next_rowid 'buse', 'sitings', @oid OUTPUT SELECT @oid "ObjectID value";
ObjectID value 98765
--Get the next global ID value. DECLARE @gid uniqueidentifier EXEC sde.next_globalid @gid OUTPUT SELECT @gid "ID value";
ID value 0D5D0605-8954-4A65-B86C-D2DA96C2D0C5
--Insert a row to the sitings table. INSERT INTO buse.sitings (objectid, globalid, mon_type) VALUES ( 98765, '0D5D0605-8954-4A65-B86C-D2DA96C2D0C5', 'golem'
);