Здравствуйте, 10der, Вы писали:
1>Есть цель легко получать результат выполнения процедуры (exec @Issue = dbo.ProcName)
1>С ходу не получилось
1>Подскажите мысли, если не трудно.
Ну можно попробовать замаппить @RETURN_VALUE на out параметр.
Стоит ещё опередлиться вот с этим:
а) генерировать ли исключения на RAISERROR или нет (их скорее всего
всегда прийдётся подавлять в коде, т.к. теперь мы анализируем return value, и тоже самое происходит внутри процедур, таким образом куча вываленных ошибок при нормальной работе — вполне нормальная ситуация, увы). Решается просто подменой DataProvider.
б) генерировать ли автоматически исключение если RETURN_VALUE != 1 (а здесь скорее всего всегда имеет смысл генерировать, но тогда сам RETURN_VALUE можно и не возвращать).
Я лично пункт б) решил просто расширив DbManager несколькими методами (DnExecute, DnExecuteList и т.п.) — мне этого хватило с головой, и в итоге реализация в лоб получилась короче и удобнее в использовании.
Для автоматизации выброса исключения можно попробовать поиграться с DbManager.OnAfterOperation, но там можно наткнутся на то, что значения параметров не будут доступны (всех ли параметров — не помню точно), но какие-то нюансы точно были, по крайней мере мне в итоге пришлось отказаться от OnAfterOperation в пользу банального враппнига ExecuteXxx методов, в том числе и поэтому.