Здравствуйте, fddima, Вы писали:
F> Ну можно попробовать замаппить @RETURN_VALUE на out параметр.
Подскажите как правильно замаппить @RETURN_VALUE на out параметр. Есть хранимая процедура для сохранения лица (person), которая в коде возврата возвращает идентификатор новой записи, либо ноль в случае ошибки или спорных вопросов. Список спорных вопросов (типа, существует похожее лицо) возвращается SELECT'ом. Переделать хранимую процедуру не представляется возможным, а для сохранения можно использовать только её.
База SQL Server 2000.
[ХранимаяПроцедура("xп_Лица_Сохранение_Лица")]
protected abstract Список<СпорныйВопросПриСохраненииЛица> СохранитьЛицо(ОперацияСохраненияЛица операция, bool операцияПодтверждена,
int? кодЛица,
String инн, String огрн, String окпо, String оконх, String оквэд, String кпп, String кодЖД,
String адресЮридический, String адресЮридическийЛат,
[Direction.ReturnValue("@RETURN_VALUE")] out int новыйКодЛица);
При выполнении возвращается ошибка
System.IndexOutOfRangeException: An SqlParameter with ParameterName '@новыйКодЛица' is not contained by this SqlParameterCollection.
at System.Data.SqlClient.SqlParameterCollection.GetParameter(String parameterName)
at System.Data.Common.DbParameterCollection.System.Data.IDataParameterCollection.get_Item(String parameterName)
at BLToolkit.Data.DataProvider.DataProviderBase.GetParameter(IDbCommand command, NameOrIndexParameter nameOrIndex)
in C:\projects\BLToolkit\Source\Data\DataProvider\DataProviderBase.cs:line 141
at BLToolkit.Data.DbManager.Parameter(String parameterName)
in C:\projects\BLToolkit\Source\Data\DbManager.cs:line 1345
Я перепробовал практически все варианты:
[Direction.ReturnValue("новыйКодЛица")] out int новыйКодЛица
[Direction.ReturnValue("@новыйКодЛица")] out int новыйКодЛица
[Direction.ReturnValue("@новыйКодЛица")] out int @новыйКодЛица
[Direction.ReturnValue("@RETURN_VALUE")] out int RETURN_VALUE
[Direction.ReturnValue("@RETURN_VALUE")] out int @RETURN_VALUE
Помогите пожалуйста. Ещё раз — база SQL Server 2000