Очень глупый пример, но если мне нужно получить максимальный идентификатор заказа из таблицы заказов, и у меня есть два варианта (я знаю, что есть и другие, но я просто заинтересован в этих двух). Я заинтересован в том, чтобы узнать, что в итоге будет меньше накладных расходов.
Первый, который просто выбирает значение:
CREATE PROCEDURE GetLastOrderID
AS
SELECT Max(OrderID) FROM Orders
и затем соответствующий код C # для создания команды SQLCommand для выполнения процедуры, вызовите .ExecuteScalar и приведите значение к типу int.
Второй, который передает значение в качестве выходного параметра
CREATE PROCEDURE GetLastOrderID (@MaxOrderID INT OUTPUT)
AS
SET @MaxOrderId = Max(OrderID) FROM Orders
и затем соответствующий код C # для создания команды SQLCommand для выполнения процедуры, добавьте выходной параметр типа int, затем вызовите .ExecuteNonQuery и, наконец, получите значение выходного параметра.
Есть ли реальное преимущество одного над другим? Мне кажется, что первый вариант потребует больше времени / ресурсов, потому что нет явных типов данных, но я хотел бы знать, есть ли какой-то определенный ответ. (или, по крайней мере, один, который превосходит мое "внутреннее чувство" с точки зрения власти)