DB2 for windows - Хранимая процедура - Печать значений таблицы в нескольких точках для отладки - PullRequest
0 голосов
/ 20 сентября 2018

Я новичок в DB2.Я пишу процедуру для использования некоторого GLOBAL TEMPORARY TABLE, вставки и манипулирования данными и их возврата.Но для отладки мне нужно знать, как выглядит таблица после каждого шага (аналогично выбору в MS SQL SERVER).Есть ли способ добиться этого.

Например: вставить что-то в GLOBAL TEMPORARY TABLE "ABC"

DECLARE CR1 CURSOR WITH RETURN TO CLIENT FOR 
Select * from ABC FOR READ ONLY;

Манипулировать некоторыми данными в ABC Table

DECLARE CR2 CURSOR WITH RETURN TO CLIENT FOR 
Select * from ABC FOR READ ONLY;

OPEN CR1 ;

OPEN CR2 ;

И CR1, и CR2 возвращают одинаковые значения (значения после манипуляции)

Есть ли способ тут же напечатать таблицу для отладки значений в ней.

Ответы [ 2 ]

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

Условная компиляция в SQL

Пример:

--#SET TERMINATOR @
SET CURRENT SQL_CCFLAGS = 'DEBUG:TRUE'@
--SET CURRENT SQL_CCFLAGS = ''@

CREATE OR REPLACE PROCEDURE TEST_DEBUG
BEGIN
  DECLARE V_ITER INT;

  DECLARE GLOBAL TEMPORARY TABLE SESSION.TEST (VALUE INT) WITH REPLACE ON COMMIT PRESERVE ROWS NOT LOGGED;
  _IF __DEBUG _THEN
    DECLARE GLOBAL TEMPORARY TABLE SESSION.DEBUG (ITER INT, VALUE INT) WITH REPLACE ON COMMIT PRESERVE ROWS NOT LOGGED;
  _END

  SET V_ITER=1; INSERT INTO SESSION.TEST VALUES 1,2,3;
  _IF __DEBUG _THEN
    INSERT INTO SESSION.DEBUG (ITER, VALUE) SELECT V_ITER, VALUE FROM SESSION.TEST;
  _END

  SET V_ITER=2; INSERT INTO SESSION.TEST VALUES 4,5,6;
  _IF __DEBUG _THEN
    INSERT INTO SESSION.DEBUG (ITER, VALUE) SELECT V_ITER, VALUE FROM SESSION.TEST;
  _END
END@

CALL TEST_DEBUG@
SELECT * FROM SESSION.TEST@
SELECT * FROM SESSION.DEBUG@

Когда вы тестировали свой SP, раскомментируйте предложение SET CURRENT SQL_CCFLAGS = '' и воссоздайте свой SP.В этом случае все блоки _IF ... _END будут удалены из скомпилированного кода.

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

Вы можете распечатать информацию , но я бы порекомендовал использовать рутинный отладчик, предоставляемый IBM Data Studio .Там вы устанавливаете точки останова в строке, где вы хотите проверить хранимую процедуру.Во время исполнения вы можете увидеть, что происходит.

...