在 Standard 或 Advanced 许可等级下可用。
可以对版本化视图执行 SQL SELECT 语句以访问版本化数据。
从默认版本中读取
运行 SQL 语句时有两种针对默认版本的选项:可读取最新状态或从您指定的版本状态读取。
读取默认版本的最新状态
版本化视图自动访问默认版本的当前状态。如果对版本化视图执行 SELECT 语句,它会在执行语句时访问默认版本的当前状态。如果其他用户正在提交对默认版本的编辑(从而更改默认版本引用的状态),您的后续查询将看到最新状态及其编辑。
读取特定版本状态
如果要查询默认版本的特定状态且不希望在查询时更改状态,请执行 setcurrentversion 存储过程。此过程将验证所提供的版本名称并在内部设置相应的数据库状态。如果要为默认版本执行 setcurrentversion,则执行 setcurrentversion 存储过程时,您针对默认版本所做的查询始终指向默认版本引用的状态。
从 SQL 客户端执行 setcurrentversion。语法如下:
CALL sde.setcurrentversion('<version_name>',?,?)
您可以根据需要再次执行此存储过程,以返回到版本表的当前状态。
- 确保有需要访问的版本化要素类或表的版本化视图。
从 ArcGIS 10.1 开始,在版本化数据时创建版本化视图。如果您的数据在版本 10.1 之前进行了版本化处理,则可通过右键单击数据集,指向管理,然后单击启用 SQL 访问来创建版本化视图。
- 打开 SQL 客户端并调用 setcurrentversion 存储过程,将版本设置为默认版本。
CALL sde.setcurrentversion('DEFAULT',?,?)
问号表示消息代码输出和消息输出。消息代码输出和消息输出是执行该过程后返回的 SQL 代码和消息。在问号中传递后将返回代码和消息。
- 对版本化视图发出 SELECT 语句以便从地理数据库中读取版本化数据。
在以下示例中,版本化视图是 sightings_ev:
SELECT ID, SPECIES, REPORTER FROM SIGHTINGS_EV WHERE REPORTER = 'chuck'
读取非默认版本
您还可以执行 setcurrentversion 存储过程以查询非默认版本。此过程将验证您指定的版本名称并在内部设置相应的版本状态。执行 setcurrentversion 存储过程时,您对版本所做的查询始终指向引用版本的状态。
如果需要更改为其他版本,可以再次调用此过程。每当工作空间刷新时都可调用此过程,以便将版本化表的当前状态返回到调用应用程序。
以下步骤演示了如何运行 setcurrentversion 来查询默认版本以外的特定版本:
- 确保有需要访问的版本化要素类或表的版本化视图。
从 ArcGIS 10.1 开始,在版本化数据时创建版本化视图。如果您的数据在版本 10.1 之前进行了版本化处理,则可通过右键单击数据集,指向管理,然后单击启用 SQL 访问来创建版本化视图。
- 打开 SQL 客户端并调用 setcurrentversion 存储过程以设置要查询的版本。
在以下示例中,将 field_inspections 设置为要查询的版本:
CALL sde.setcurrentversion('FIELD_INSPECTIONS',?,?)
问号表示消息代码输出和消息输出。消息代码输出和消息输出是执行该过程后返回的 SQL 代码和消息。在问号中传递后将返回代码和消息。
- 对版本化视图发出 SELECT 语句以便从地理数据库中读取版本化数据。
在以下示例中,版本化视图是 code_ev:
SELECT owner, site_address, region FROM code_ev WHERE region = 'b'
如果需要返回查询默认版本的当前状态,可执行 set_default 过程。
CALL sde.set_default;