Re[2]: RETURN_VALUE, DataAccesor
От: Taison Россия  
Дата: 02.07.12 08:29
Оценка:
Здравствуйте, 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
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.