При использовании объекта DataReader для доступа к данным из базы данных (например, SQL Server) через хранимые процедуры любой выходной параметр, добавленный к объекту Command перед выполнением, не заполняется после чтения. Я могу нормально читать данные строки, а также все входные параметры, но не выходные.





Это связано с конструктивным характером DataReaders. Любые параметры, помеченные как ParameterDirection.Output, не будут «заполнены», пока DataReader не будет закрыт. Пока все еще открыт, все параметры вывода, скорее всего, просто вернутся к null.
Полную статью базы знаний Microsoft по этому поводу можно посмотреть здесь.