在SQL Server 的存儲過程中,支持輸入(Input)、輸出參數(Output),也支持返回值參數(ReturnValue)
關於輸入參數,大家都很好理解,就是我們提供數值給存儲過程,這就好比是編程中的按值傳遞(ByVal)的形參。該參數傳遞到存儲過程後,經過處理,但調用方是不可以得到經過處理之後的值的。
而輸出參數,則類似於編程中的按引用傳遞(ByRef)的形參。也就是說,該參數傳遞到存儲過程之後,可以在調用方得到處理過後的值。
返回值參數不是一個形參,而類似於編程中的返回值類型。它都是通過Return語句來返回的,而且在SQL Server中,必須返回INT型的數據,而且很顯然,只能有一個返回值,因爲RETURN語句其實是會終止存儲過程的。
下面來看看一個例子
ALTER PROCEDURE [dbo].[GetCustomers]
(@rowcount INT OUTPUT)
AS
SELECT [CustomerID]
,[CompanyName]
,[ContactName]
,[ContactTitle]
,[Address]
,[City]
,[Region]
,[PostalCode]
,[Country]
,[Phone]
,[Fax]
FROM [Northwind].[dbo].[Customers]
SET @rowcount=@@rowcount
上面這個存儲過程是通過一個輸出參數,來接收一個行計數。
要實現同樣的功能,也可以用返回值參數
ALTER PROCEDURE [dbo].[GetCustomers]
AS
SELECT [CustomerID]
,[CompanyName]
,[ContactName]
,[ContactTitle]
,[Address]
,[City]
,[Region]
,[PostalCode]
,[Country]
,[Phone]
,[Fax]
FROM [Northwind].[dbo].[Customers]
RETURN @@rowcount
那麼,如何在別的存儲過程中調用該存儲過程,並且接收它的輸出參數或者返回值參數呢
下面是接收輸出參數的示例
DECLARE @count INT
EXECUTE GetCustomers @count OUTPUT
PRINT @count
下面是接收返回值參數的示例
DECLARE @count INT
EXECUTE @count=GetCustomers
PRINT @count
原文地址:http://www.cnblogs.com/chenxizhang/archive/2009/03/19/1416217.html