Для доступа к версионным данным можно выполнять запросы SQL SELECT к версионным представлениям.
Чтение из версии Default
При выполнении запросов SQL к версии Default у вас есть две опции: вы можете обращаться к последней версии или к заданному состоянию.
Чтение последнего состояния версии Default
Версионные представления автоматически получают доступ к текущему состоянию версии Default. Если вы выполняете запросы SELECT к версионному представлению, оно будет обращаться к текущему состоянию Default на момент выполнения запроса. Если другие пользователи вносят изменения в версию Default (тем самым изменяя состояние, на которое ссылается версия Default), последующие запросы будут адресованы к последнему по времени состоянию с соответствующими изменениями.
Чтение определенного состояния версии
Если вы хотите выполнить запрос к определенному состоянию версии Default и не хотите, чтобы состояние изменилось во время выполнения запроса, выполните встроенную процедуру setcurrentversion. Эта процедура проверяет имя версии и задает соответствующее состояние базы данных. Если вы выполняете setcurrentversion к версии Default, запросы к Default всегда будут обращаться к тому состоянию, в котором находилась версия при начале выполнения встроенной процедуры setcurrentversion.
Выполните setcurrentversion из клиента SQL. Синтаксис выглядит так:
CALL sde.setcurrentversion('<version_name>',?,?)
Вы можете снова выполнить эту процедуру, чтобы вернуть текущее состояние версионной таблицы, если необходимо.
- Убедитесь, что для версионного класса объектов или таблицы, к которой вы обращаетесь, имеется версионное представление.
Начиная с ArcGIS 10.1, версионные представления создаются автоматически для всех версионных данных. Если данные были зарегистрированы как версионные в ПО, выпущенном ранее версии 10.1, вы можете создать версионное представление, щелкнув набор данных в дереве Каталога или в ArcMap правой кнопкой мыши и выбрав Управление, Включить SQL-доступ.
- Откройте клиент SQL и вызовите встроенную процедуру setcurrentversion, чтобы выбрать версию Default.
CALL sde.setcurrentversion('DEFAULT',?,?)
Знаки вопроса означают код выходного сообщения и само выходное сообщение. Код выходного сообщения и сообщение являются кодами SQL и сообщениями, возвращаемыми после выполнения процедуры. Вы передаете знаки вопроса, затем код и сообщение возвращаются.
- Выполнение выражения SELECT к версионному представлению для чтения версионных данных из базы геоданных.
В следующем примере версионным представлением является sightings_ev:
SELECT ID, SPECIES, REPORTER FROM SIGHTINGS_EV WHERE REPORTER = 'chuck'
Чтение из версии, отличной от Default
Вы также можете выполнить встроенную процедуру setcurrentversion для запроса к версии, отличной от Default. Эта процедура проверяет имя указанной версии и задает соответствующее внутреннее состояние версии. Запросы к версии всегда указывают на состояние соответствующей версии, полученное при выполнении встроенной процедуры setcurrentversion.
Эту процедуру можно вызвать снова, чтобы изменить другие версии, также ее можно вызывать каждый раз при обновлении рабочей области, чтобы возвращать текущее состояние версионной таблицы вызывающему приложению.
В следующих пошаговых инструкциях показано, как выполнить setcurrentversion для запроса к версии, отличающейся от Default:
- Убедитесь, что для версионного класса объектов или таблицы, к которой вы обращаетесь, имеется версионное представление.
Версионные представления создаются при регистрации таблицы, класса объектов или набора классов в качестве версионных. Если данные были сделаны версионными до ArcGIS 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'
Если необходимо вернуть запрос к текущему состоянию версии Default, выполните процедуру set_default.
CALL sde.set_default;