操作方法
提供的说明介绍了如何针对 Oracle 使用结构化查询语言 (SQL) 将值插入企业级地理数据库版本化视图的全局 ID 或全局唯一标识符 (GUID) 列中。
全局 ID 和 GUID 数据类型可存储注册表样式的字符串,该字符串包含用大括号括起来的 36 个字符。 这些字符串用于唯一识别单个地理数据库中和跨多个地理数据库的要素或表行。 这是在单向和双向地理数据库复制中追踪要素以及在关系或者需要全局唯一标识符的任何应用程序中使用要素的方式。
在某关系中,如果“全局 ID”字段是原始键,则 GUID 字段必须为目标键。 通过右键单击 ArcCatalog,然后单击“添加全局 ID”,即可将全局 ID 添加到该要素类。 地理数据库将自动保留这些值。 在 ArcCatalog 中创建 GUID 字段并保留其值。
在使用 SQL 将行插入包含“全局ID”列的版本化视图中时,需要为“全局 ID”列提供唯一 GUID 值。
注: 有关全局 ID、GUID 和地理数据库复制的详细信息,请参阅“相关信息”部分中的 ArcGIS Desktop 帮助。提供的示例特定于 Oracle;但是步骤类似于其他受支持的数据库。
CREATE OR REPLACE FUNCTION GDB_GUID RETURN NCHAR IS guid NCHAR (38); BEGIN guid := upper(RAWTOHEX(SYS_GUID())); RETURN '{'||substr(guid,1,8)||'-'||substr(guid,9,4)||'-'||substr(guid,13,4)||'-'||substr(guid,17,4)||'-'||substr(guid,21,12)||'}'; END; /
grant execute on gdb_guid to public;
"geodatabase administrator" table -o create_mv_view -T parcels_v -t parcels -i <端口> -u <用户> -p <密码>
注: 有关在企业级地理数据库中创建和使用版本化视图的详细信息,请参阅 ArcGIS Desktop 帮助。
select registration_id,table_name from sde.table_registry where table_name='PARCELS'; REGISTRATION_ID TABLE_NAME --------------- --------------------- 113 PARCELS
select srid from sde.st_geometry_columns where table_name='PARCELS' and owner='USER1'; SRID ---------- 7
创建一个新版本。 variable mvvers nvarchar2(97); exec :mvvers := 'PARCELS_42'; exec sde.version_user_ddl.create_version('SDE.DEFAULT',:mvvers,sde.version_util.C_take_name_as_given,sde.version_util.C_version_public,'Parcels WorkOrder 42 Version');
注: 有关在企业级地理数据库中使用版本化视图进行编辑的详细信息,请参阅 ArcGIS Desktop 帮助。在以下示例中:
注: 有关 ST_GEOMETRY 类型以及在企业级地理数据库中插入几何的详细信息,请参阅 ArcGIS Desktop 帮助。
--设置要编辑的版本。 exec sde.version_util.set_current_version('USER1.PARCELS_42'); --启动编辑会话。 exec sde.version_user_ddl.edit_version('USER1.PARCELS_42',1); --执行所需插入。 --对于空间几何类型,可能会插入形状。 insert into parcels_v (objectid,globalid,shape) values (sde.version_user_ddl.next_row_id('USER1',113),sde.GDB_GUID,(sde.st_polygon ('polygon ((10000 520000, 100008889 55000, 1045545983 234280934, 10000 520000))',7))); --对于非空间几何类型(二进制、LOB 等),必须插入空形状: insert into parcels_v (objectid,globalid,shape) values (sde.version_user_ddl.next_row_id('USER1',113),sde.GDB_GUID, NULL); --停止编辑会话。 exec sde.version_user_ddl.edit_version('USER1.PARCELS_42',2); --提交编辑内容。 commit;
获取来自 ArcGIS 专家的帮助
下载 Esri 支持应用程序