Построитель хранилища Oracle (owb) оценивает результаты хранимых процедур в процессе
У меня есть процесс, созданный кем-то ранее, который вызывает очень простую хранимую процедуру. после завершения процедуры поток процесса имеет 2 перехода: один, если хранимая процедура прошла успешно, и другой, если нет. Однако сама хранимая процедура не возвращает ничего, что может быть непосредственно оценено потоком процесса, как результат возврата. Теперь эта процедура, если она терпит неудачу (с вездесущей проблемой max extants), она вызовет ветвь, которая вызовет хранимую процедуру для отправки сообщения об ошибке по электронной почте. Если это удастся, произойдет обратное.
Мне пришлось настроить процедуру, чтобы я создал новую. теперь, если это терпит неудачу или успешно, ветвь успеха вызывается независимо. Я проверил все документы от оракула о том, как сделать эту работу, и за всю мою жизнь не могу определить, как заставить ее работать правильно. Я впервые опубликовал это на форуме оракула и не получил никаких ответов. У кого-нибудь есть идеи, как заставить это работать?
2 ответа
Согласно руководству Oracle Warehouse Builder:
Когда вы добавляете переход к холсту, по умолчанию к переходу не применяются никакие условия.
Убедитесь, что вы правильно определили условный переход, как описано в разделе " Определение условий перехода " документации.
Пользовательская активность вернет ERROR
результат, если:
- это вызывает исключение, или
- возвращает значение
3
иUse Return as Status
опция установлена в true
"Однако сама хранимая процедура не возвращает ничего, что может быть непосредственно оценено потоком процесса, как результат возврата".
В этом суть: если процедура процедуры не дает никакого сигнала, как вы можете определить, была ли она успешной? Действительно, каково определение успеха в этих обстоятельствах?
Я не понимаю, почему, когда вам пришлось "подправить процедуру", вы написали новую, а не подправляли оригинальную процедуру. Единственный способ решить эту проблему - получить обратную связь от оригинальной процедуры.
На данный момент у нас заканчиваются детали. Прямой вариант - отредактировать оригинальную процедуру, чтобы она передавала информацию о результатах, возможно, через параметры OUT или вводя некоторые возможности ведения журнала. В качестве альтернативы, перепишите его, чтобы вызвать исключение при сбое. Опция косвенного действия состоит в том, чтобы написать несколько запросов, чтобы определить, чего достигла процедура в данном прогоне, а затем выяснить, является ли это успехом.
Лично, переписывание оригинальной процедуры кажется лучшим вариантом.
Если этот ответ не поможет, вам нужно больше рассказать о своем сценарии. Что делает ваша процедура, как вам нужно ее оценить, почему вы не можете переписать ее.