Как отладить блок SQL BEGIN-END в DB2? - PullRequest
0 голосов
/ 05 сентября 2018

У меня есть большой сценарий SQL, который содержит блок BEGIN DECLARE-END для базы данных DB2.

Этот блок содержит большой цикл WHILE, который кажется бесконечным, и мне нужно выяснить, в чем ошибка:

--#SET TERMINATOR @
BEGIN
  DECLARE...
  //many insert/join/update
  WHILE(condition)
    //some looping join
  END WHILE;
END@

Мой сценарий глобально выглядит так.

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

  • Есть ли способ отследить каждый выполненный оператор в блоке?
  • Если нет, как бы вы порекомендовали приступить к отладке моего сценария?

Спасибо за помощь,

1 Ответ

0 голосов
/ 05 сентября 2018

Обычно проверка кода (возможно другой парой глаз) оказывается быстрее всего.

Вы можете выполнять отладку (один шаг, точка останова и т. Д.) С помощью IBM Data Studio (хотя вам может понадобиться сначала инкапсулировать блок в хранимую процедуру).

Если ваш Db2-сервер работает в Linux / Unix / Windows, вы также можете использовать ведение журналов действий, другими словами, изменить свой код, добавив строки отладки в ключевые моменты, затем позволить своему коду работать и просматривать результаты. Это ограничительно, потому что вы можете не увидеть вывод, пока код не остановится, в зависимости от буферизации. Но это может помочь. Чтобы использовать его, добавьте set serveroutput on к вашему сценарию до начала блока, а затем добавьте call DBMS_OUTPUT.PUT_LINE('....some debugging info...') в ключевых точках. Смотрите PUT_LINE . См. Также другие методы в пакете DBMS_OUTPUT.

Я также видел код, который заносит в таблицу, то есть вместо использования dbms_output.put_line, он вызывает автономный sproc для добавления строки прогресса в отдельную выделенную таблицу регистрации. Эту таблицу можно просматривать во время работы основного источника, а также иметь временные метки и т. Д. Это очень полезно, когда ведение журнала можно включить / отключить на лету.

...