Вот сценарий:
- Вы загружаете страницу, которая отображается на основе данных в базе данных (назовите их «предположениями»)
- Кто-то меняет предположения
- Вы отправляете свою страницу
- ОШИБКА!
Общая схема решения этой проблемы такова (верно?):
В вашей процедуре сохранения внутри транзакции начала и принятия вы сначала проверяете свои предположения. Если какой-либо из них изменился, вы должны вернуть изящное сообщение об ошибке, что-то вроде XML-списка идентификаторов, с которыми у вас были проблемы, которые вы обрабатываете на странице , а не позволять обрабатывать его обработкой ошибок по умолчанию инфраструктура.
Итак, мой вопрос, каков наилучший способ сделать это?
- Возвращать список xml и флаг ошибки в неустановленных параметрах out и 0, если он завершается правильно?
- Использовать параметр out для возврата состояния ошибки, и результатом процедуры будет либо список ошибок, либо действительные результаты процедуры?
- Что-то еще? (Должен заметить, что RaiseRerror может вызвать ошибку proc и получить код обработки ошибок по умолчанию)
Обновление : Я хотел бы вернуть управляемый список идентификаторов, которые не удалось (я планирую выделить эти ячейки в приложении). Я мог бы вернуть их в формате CSV в RAISEERROR, но это выглядит грязно.