Как я могу проверить результаты запроса в сохраненной функции PL/SQL, ПОКА они выполняются внешним приложением?

Я столкнулся с проблемой, когда запрос в хранимой процедуре удаляет больше строк, чем должно быть. В этом запросе используется дополнительная выборка, чтобы определить, какие записи следует удалить. Например:

      DELETE FROM MyTable_gt mt
WHERE mt.Id not in (SELECT ot.Id
                      FROM OtherTable_gt ot);

Эта процедура вызывается приложением C#, а таблицы, с которыми я работаю, являются глобальными временными таблицами. Поэтому мне нужен какой-то способ проверять результаты запроса во время его выполнения из моего приложения.

Наконец я нашел инструменты разработчика Oracle (ODT) для Visual Studio и установил их, думая, что это может помочь в отладке кода по мере его выполнения. Однако теперь я понимаю, что на самом деле это мне совсем не помогает, потому что у меня до сих пор нет возможности узнать, какие идентификаторы возвращает подвыбор.

Я ищу способ точно увидеть, что возвращает этот подвыбор. Я был бы даже рад возможности запускать запросы в контексте этой транзакции (например, через окно интерпретации в Visual Studio). Однако я не смог найти способ сделать это.

Есть ли какой-нибудь инструмент, который поможет в этом? Или мне приходится вручную перебирать результаты запроса и распечатывать их? (Я думал, что мы, программисты, прошли мимо использования отладки печати)

1 ответ

ЛюбойDELETEзаявление может бытьSELECTи вы можете вставить свои данные в другие таблицы, где вы не ограничены фиксацией/откатом сеанса. В PLSQL Developer есть окна тестирования, и вы можете отлаживать PLSQL, но лично я не считаю это проще, чем отладка при печати.

Другие вопросы по тегам