Как я могу проверить результаты запроса в сохраненной функции 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, но лично я не считаю это проще, чем отладка при печати.