Я все еще учусь SQL и не может понять разницу между этими 2, как показано ниже:SQL Server хранимые процедуры с или без выходного параметра
Подход № 1:
create proc sp_test1
@count int out,
@SalePrice int
as
begin
SELECT @Count = COUNT(*)
FROM dbo.SalesHistory
WHERE SalePrice = @SalePrice;
end
declare @Count int;
exec sp_test1 @SalePrice = '967', @Count = @Count output;
select @Count;
Подход № 2:
create proc sp_test2
@SalePrice int
as
begin
SELECT COUNT(*)
FROM dbo.SalesHistory
WHERE SalePrice = @SalePrice;
end
exec sp_test2 @SalePrice = '967';
Оба должны вернуть число. Но в чем разница между этими двумя? В каком сценарии я использую каждый? Спасибо вам, ребята!
Примечание: вы не должны ** использовать префикс 'sp_' для ваших хранимых процедур. Microsoft [зарезервировала этот префикс для собственного использования (см. * Именование сохраненных процедур *)] (http://msdn.microsoft.com/en-us/library/ms190669%28v=sql.105%29.aspx) и вы рискуете столкнуться с именем когда-нибудь в будущем. [Это также плохо для производительности вашей хранимой процедуры] (http://www.sqlperformance.com/2012/10/t-sql-queries/sp_prefix). Лучше просто просто избегать 'sp_' и использовать что-то еще в качестве префикса - или никакого префикса вообще! –
@marc_s Извините, я должен был поставить имя схемы до «sp_test1». Спасибо за напоминание. –