Мне нужно создать хранимую процедуру, которая должна возвращать счетчик некоторых записей. Я использую .Net, чтобы прочитать результат.
Я могу использовать параметр OUTPUT для возврата значения или Я могу сделать select count(*) в хранимой процедуре и использовать SqlCommand.ExecuteScalar для его чтения.
OUTPUT
select count(*)
Что лучше и почему?
Ознакомьтесь с этой статьей MSDN: Сравнение производительности: методы доступа к данным
В статье показано в тесте производительности для GetOrderStatus, что производительность между параметром OUTPUT и ExecuteScaler одинакова для получения одного значения , но для ExecuteScalar требуется меньше кода.
GetOrderStatus
Вот некоторые другие интересные мысли о том, что не следует использовать параметр OUTPUT: Что не так с выходными параметрами . Мне нравится мысль о Output params break the fundamental idea of a function в этом посте.
Output params break the fundamental idea of a function
Чтобы добавить мысль - ExecuteScalar вернет код состояния, если SP не упоминает иначе.Кажется, это хорошая практика, чтобы сохранить это вокруг.
ExecuteScalar
Определенно - параметр OUTPUT - самый быстрый и правильный способ