示例:使用 SQL 查找地理数据库版本

可使用 XPath 表达式从特定 XML 文档提取版本号,以确定地理数据库的版本。

版本号通常存储为主要版本、次要版本和修复缺陷版本。主要版本对应于地理数据库的主版本。ArcGIS 8 是第一个包括 ArcGIS 地理数据库功能的版本;因此,ArcGIS 8 对应于主版本 1。ArcGIS 9 对应于主版本 2,而 ArcGIS 10 对应于主版本 3。

在 ArcGIS 版本中,次要版本以点 (.) 右侧的数字为标志。例如,9.3 的次版本号是 3。

修复缺陷版本只在安装了导致地理数据库方案发生变化的服务包、修补程序或快速修复程序时增加。一般来说,这样的变化避免出现在服务包、修补程序和快速修复程序中,因此修复缺陷版本通常为 0。

以下查询将检索地理数据库中的主要版本、次要版本和修复缺陷版本的版本号:

-- Queries a dbo-schema geodatabase in SQL Server
-- Gets the geodatabase release from the workspace catalog item.

SELECT
  Definition.value('(/DEWorkspace/MajorVersion)[1]', 'smallint') AS "Major version",
  Definition.value('(/DEWorkspace/MinorVersion)[1]', 'smallint') AS "Minor version",
  Definition.value('(/DEWorkspace/BugfixVersion)[1]', 'smallint') AS "Bug fix version"
FROM
 dbo.gdb_items AS items INNER JOIN
  (SELECT UUID 
   FROM dbo.gdb_itemtypes
   WHERE Name = 'Workspace') AS itemtypes
  ON items.Type = itemtypes.UUID
-- Queries PostgreSQL
-- Gets the geodatabase release from the workspace catalog item.

SELECT
  (xpath('//MajorVersion/text()',definition))::text as "Major version",
  (xpath('//MinorVersion/text()',definition))::text as "Minor version",
  (xpath('//BugfixVersion/text()',definition))::text as "Bug fix version"
FROM
 sde.gdb_items AS items INNER JOIN
  (SELECT uuid 
   FROM sde.gdb_itemtypes
   WHERE name = 'Workspace') AS itemtypes
  ON items.type = itemtypes.uuid;
-- Queries Oracle
-- Gets the geodatabase release from the workspace catalog item.

SELECT
  EXTRACTVALUE(XMLType(Definition), '/DEWorkspace/MajorVersion') AS "Major version",
  EXTRACTVALUE(XMLType(Definition), '/DEWorkspace/MinorVersion') AS "Minor version",
  EXTRACTVALUE(XMLType(Definition), '/DEWorkspace/BugfixVersion') AS "Bug fix version"
FROM
 sde.gdb_items_vw items INNER JOIN
  (SELECT UUID 
   FROM sde.gdb_itemtypes
   WHERE Name = 'Workspace') itemtypes
  ON items.Type = itemtypes.UUID;

3/7/2012