SQL Server 存儲過程調用和參數運用

在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

發佈了19 篇原創文章 · 獲贊 3 · 訪問量 31萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章