DbManager.SetSpCommand с пустым parameterValues
От: Sashko Россия http://www.dc.baika.ru/
Дата: 25.01.06 10:40
Оценка: 40 (1)
Сразу оговорюсь, что работаю с Oracle'овским Data Provider'ом (10.1.0.4). Может с DP от MS таких проблем и не возникает.

Определяю абстакного reader'а (GetEntities)

    public abstract class EntityAccessor : DataAccessor<Entity>
    {
        [SprocName("topology.get_entities")]
        public abstract List<Entity> GetEntities();
    }

или просто делаю вызов

    List<Entity> entities = db.SetSpCommand("topology.get_entities").ExecuteList<Entity>();


где get_entities определена либо как функция без параметров возвращающая REF CURSOR

    function get_entities return refcursor;

либо как процедура с OUT параметром типа REF CURSOR.

    procedure get_entities(p_entities out refcursor);

ExecuteReader у ODP будет фалить, так как ему необходимо что б в команде было указано, либо Return параметер типа RefCursor (в первом случае), либо Output параметр RefCursor (во втором). В текущей реализации BLT, в случае если parameterValue метода DbManager.SetSpCommand путой, CreateSpParameters не вызывается и команда выполняется с пустым списком параметров.

Форсировал вызов CreateSpParameters (с небольшими изменениями в ней), ExecuteReader'ы стали выполняться.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.