TOAD, отладка триггеров. Ограничение на запись в watch-list :OLD и :NEW. Можно ли обойти ?

GrayCity
Дата: 03.06.2006 23:26:58
hi all.
Захотелось тут на досуге триггер отладить (в Жабе).
После получения граблями по лбу в её отладчике при попытке записать в watch-list :NEW и :OLD-значения, в хелпе найдено следующее:
TOAD help
Limitations to Watches
Because of limitations in the Oracle Probe API, there are some configurations that you cannot Watch.
...
You cannot watch a trigger :new.column or :old.column value.
Люди! поделитесь, кто и как отлаживает триггеры ?! Ведь там :NEW и :OLD значения - имхо, самое главное, что надо отслеживать.
Можно ли обойтись без гемора типа:
DECLARE
 tmp4NewVal NUMBER;
 tmp4OldVal NUMBER;
BEGIN
  ...
  tmp4NewVal := :NEW.someColumn;
  tmp4OldVal := :NEW.someColumn;
END
- и добавления затем этих tmp4NewVal и tmp4OldVar в watch-list.
Может, всё-таки дело в Жабе, а не в СУБД ?
Или это фундаментально-бетонное ограничение корпорации Oracle ?
Barkovsky
Дата: 04.06.2006 00:51:01
чисто конкретные пацаны делают отладку через dbms_output.put_line.
GrayCity
Дата: 04.06.2006 01:04:34
А там чё ? Типа, можно спросить напрямки, чему равен :NEW.NAME ?
Barkovsky
Дата: 04.06.2006 01:08:12
прикиньте.
GrayCity
Дата: 04.06.2006 01:27:19
Прикину (т.е. попробую), конечно.
Однако, это каменный век, все эти вставки в код dbms_output.put_line. Имхо.
Понавставляю я туда пять-семь строк этого вызова и на что будет похож мой код ? На частокол отладочных крючков, которые потом удалять надо или комментировать.
Современный мир катится всё же в сторону типа "поставил курсор на переменную ==> ткул Ctrl-F5 ==> увидел её в watch_list'e". И без разницы, чего там ткнул: :NEW, :OLD или простую переменную.

Впрочем, я так и не понял: если dbms_output.put_line даёт такую возможность, тогда что там за брехня написана в хелпе Жабы (см. начальный топик) ?
Barkovsky
Дата: 04.06.2006 01:48:52
во-первых, ничего удалять из кода не нужно.
потому что,
а) отладка отключается простым set serveroutput off.
б) когда много лет спустя, в золотом веке вам понадобится внести изменения, и еще раз отладиться - у вас уже все есть.

во-вторых, ваше отношение концептуально изменится, если из-какого либо бага в жабе значение в watch-liste будет отличаться от действительного, и современный мир укатится дальше существующего положения дел.

что там в жабе написано не знаю. могу предположить, что действительно есть такие limitations, достаточные, чтобы не тратить время на разбирательства с ними.
dmidek
Дата: 04.06.2006 01:56:57
ИМХО
Уже довольно давно пишу на Oracle. НИ РАЗУ не пользовался дебаггером.
Может мне не повезло с GUI, SQL Navigator по слухам в дебаггере полностью дуреет.
dbms_output.put_line - удобно , надежно, не зависит от GUI и что самое важное - это средство Oracle.

Не знаю, куда там катится мир, но я хочу катиться :) в сторону программ, в которых отладчик не нужен вообще, и уж во всяком случае не становиться в тупик и не терять рабочее время из за прибамбасов, которые приходят в голову разработчикам оболочек, ничего общего не имеющих с корпорацией Oracle.
Elic
Дата: 05.06.2006 00:36:01
dmidek
НИ РАЗУ не пользовался дебаггером.
+1.
SeaGate
Дата: 05.06.2006 06:26:08
GrayCity
Захотелось тут на досуге триггер отладить (в Жабе).

Если у Вас десятка, то обратите внимание на условную компиляцию.
ИМХО, весьма и весьма полезная штука, как раз для таких вещей (как минимум).
Вадиман
Дата: 05.06.2006 06:57:46
Я для отладки предпочитаю DBMS_PIPE вместо DBMS_OUTPUT. Кросс-сессионная штука :). В формсах установил - в плюсе считал. Удобно. Правда, нельзя давать переполняться каналам, а то такие глюки пойдут... ну, поэтому и использую только как разовые отладочные элементы...