Введение в стандарты языка баз данных SQL




Прямой вызов операторов SQL - часть 2


(a) выполняется оператор ROLLBACK или оператор COMMIT; если возникает невосстанавливаемая ошибка или если прямой вызов SQL завершается непредусмотренным образом (это определяется в реализации), или если не удовлетворяется некоторое ограничение, то выполняется оператор ROLLBACK; в противном случае выбор между выполнением операторов ROLLBACK и COMMIT определяется в реализации;

(b) пусть D - имя дескриптора в некоторой области дескрипторов, который выделен в пределах текущей сессии; тогда выполняется следующий оператор: DEALLOCATEDESCRIPTORD;

(c) все SQL-сессии, связанные с данным SQL-агентом, завершаются.

  • Пусть S обозначает прямой оператор SQL.
  • Текущим идентификатором авторизации для выполнения S является идентификатор авторизации SQL-сессии.
  • При вызове SSQL-агентом происходит следующее:
    • (a) если S - это оператор подключения, то

      (i) очищается область диагностики;

      (ii) S выполняется;

      (iii) если оператор S успешно инициировал или возобновил SQL-сессию, то последующие вызовы операторов прямого SQL данным SQL-агентом связываются с этой сессией, пока SQL-агент не завершит ее или не сделает потенциальной;

      (b) в противном случае:

      (i) если для SQL-агента не существует текущая SQL-сессия, то:

      (*) если SQL-агент не выполнял оператора подключения и с ним не связана SQL-сессия по умолчанию, то выполняется следующий оператор подключения: CONNECTTODEFAULT;

      (**) если SQL-агент не выполнял оператора подключения и с ним связана SQL-сессия по умолчанию, то выполняется следующий оператор установки подключения: SETCONNECTIONDEFAULT;

      (***) в противном случае возникает исключительное условие;

      (ii) если для данного SQL-агента существует активная транзакция, то S связывается с этой транзакцией SQL-transaction; если S - прямой оператор SQL, определяемый в реализации, то в реализации же определяется, может ли S ассоциироваться с текущей транзакцией, если не может, то возбуждается исключительное условие;

      (iii) если для данного SQL-агента не существует активной транзакции, то

      (*) если S является инициирующим транзакцию оператором, то инициируется SQL-транзакция;




      Содержание  Назад  Вперед