SQL Server存儲過程中的參數(shù)運用
SQL Server存儲過程是SQL數(shù)據(jù)庫的重要組成部分,其中可以用到許多參數(shù)。在SQL Server存儲過程中,支持輸入(Input)、輸出參數(shù)(Output),也支持返回值參數(shù)(ReturnValue)。
關(guān)于輸入?yún)?shù),大家都很好理解,就是我們提供數(shù)值給存儲過程,這就好比是編程中的按值傳遞(ByVal)的形參。該參數(shù)傳遞到存儲過程后,經(jīng)過處理,但調(diào)用方是不可以得到經(jīng)過處理之后的值的。
而輸出參數(shù),則類似于編程中的按引用傳遞(ByRef)的形參。也就是說,該參數(shù)傳遞到SQL Server存儲過程之后,可以在調(diào)用方得到處理過后的值。
返回值參數(shù)不是一個形參,而類似于編程中的返回值類型。它都是通過Return語句來返回的,而且在SQL Server中,必須返回INT型的數(shù)據(jù),而且很顯然,只能有一個返回值,因為RETURN語句其實是會終止SQL Server存儲過程的。
下面來看看一個例子
- 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
上面這個SQL Server存儲過程是通過一個輸出參數(shù),來接收一個行計數(shù)。
要實現(xiàn)同樣的功能,也可以用返回值參數(shù)
- ALTER PROCEDURE [dbo].[GetCustomers]
- AS
- SELECT [CustomerID]
- ,[CompanyName]
- ,[ContactName]
- ,[ContactTitle]
- ,[Address]
- ,[City]
- ,[Region]
- ,[PostalCode]
- ,[Country]
- ,[Phone]
- ,[Fax]
- FROM [Northwind].[dbo].[Customers]
- RETURN @@rowcount
那么,如何在別的存儲過程中調(diào)用該存儲過程,并且接收它的輸出參數(shù)或者返回值參數(shù)呢
下面是接收輸出參數(shù)的示例
- DECLARE @count INT
- EXECUTE GetCustomers @count OUTPUT
- PRINT @count
下面是接收返回值參數(shù)的示例
- DECLARE @count INT
- EXECUTE @count=GetCustomers
- PRINT @count
【編輯推薦】