IBM db2, транзакции в SQL-скриптах - PullRequest
0 голосов
/ 25 октября 2019

Я ищу опцию для работы с транзакциями в программе IBM SQL-Scripts. В целях сравнения я добавил изображение программы SQL-Scripts, о которой я говорю.

enter image description here

Кроме того, я также хочу выполнить эти транзакциипрограммно с RPG (бесплатно). Как это может выглядеть?

Ответы [ 2 ]

2 голосов
/ 25 октября 2019

Вы упоминаете как утилиту Run SQL Scripts, так и RPG.

У вас есть два варианта в любом месте.

  1. Изменение уровня изоляции по умолчанию
  2. Добавьте предложение with к отдельным операторам, чтобы переопределить значение по умолчанию.

Для сценариев запуска SQL по умолчанию в соединении JDBC настроено значение по умолчанию. enter image description here

Для SQLRPGLE по умолчанию может быть установлено

  • Во время компиляции с помощью параметра COMMIT() команды CRTSQLRPGI
  • с помощью оператора SET OPION SQL в вашем источнике

SET OPTION предпочтительнее, если только у вас нет CMS, которая может гарантировать, что команда CRTSQLRPGI всегда выполняется правильно.

exec SQL
 set option commit = *CHG;

Обратите внимание, что оператор SET OPTION является оператором времени компиляции, а не времени выполнения. Это должен быть физически первый оператор SQL в вашем модуле SQLRPGLE. У вас может быть только один, и он действует для всего модуля.

Независимо от используемого уровня изоляции / уровня обязательств по умолчанию. Вы можете установить уровень для данного оператора, используя предложение WITH.

update mytable
  set mycolumn = 1
  with chg;

Наконец, обратите внимание, что для использования контроля обязательств ваша таблица должна быть занесена в журнал.

1 голос
/ 25 октября 2019

См. составной (динамический) оператор

Обратите внимание, что вам потребуется использовать терминатор оператора, отличный от ;, в редакторе SQL. @ является широко используемым.
Кроме того, если вы используете IBM Data Studio, вы получите локальный синтаксический анализ, который поможет вам обнаружить любые синтаксические ошибки в вашем коде.

...