我還在學習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_'前綴。微軟已經保留了這個前綴以供自己使用(參見*命名存儲過程*)](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」之前放置模式名稱。謝謝你提醒我。 –