1. 程式人生 > >Sql Server 儲存過程呼叫儲存過程接收輸出引數,返回值

Sql Server 儲存過程呼叫儲存過程接收輸出引數,返回值

  1. CREATE PROCEDURE [dbo].[GetCustomers]  
  2. (@rowcount INT OUTPUT)  
  3. AS   
  4.     SELECT [CustomerID]  
  5.       ,[CompanyName]  
  6.       ,[ContactName]  
  7.       ,[ContactTitle]  
  8.       ,[Address]  
  9.       ,[City]  
  10.       ,[Region]  
  11.       ,[PostalCode]  
  12.       ,[Country]  
  13.       ,[Phone]  
  14.       ,[Fax]  
  15.   FROM [Northwind].[dbo].[Customers]  
  16. SET @[email protected]@rowcount   

接收輸出引數:

  1. DECLARE @count INT  
  2. EXECUTE GetCustomers  @count OUTPUT  
  3. PRINT @count   

2,帶返回值

建立儲存過程:

  1. CREATE PROCEDURE [dbo].[GetCustomers]  
  2. AS   
  3.     SELECT [CustomerID]  
  4.       ,[CompanyName]  
  5.       ,[ContactName]  
  6.       ,[ContactTitle]  
  7.       ,[Address]  
  8.       ,[City]  
  9.       ,[Region]  
  10.       ,[PostalCode]  
  11.       ,[Country]  
  12.       ,[Phone]  
  13.       ,[Fax]  
  14.   FROM [Northwind].[dbo].[Customers]  
  15. RETURN @@rowcount   

接收返回值:

  1. DECLARE @count INT  
  2. EXECUTE @count=GetCustomers   
  3. PRINT @count   

簡單的小例子:

CREATE PROC myProc
@year1 varchar(10), --年份
@month1 varchar(100), --多個月份


@Rt1 varchar(100) output     --輸出引數
AS
BEGIN
set @Rt1=( select name from dbo.tb where id=2)   --儲存過程中 變數賦值的兩種方法
--select @Rt1 = name from dbo.tb where id = 2    --此時輸出引數@Rt1已經被賦值(輸出引數在我看來,就是傳入儲存過程的一個引用)

--return -1      有return就會在這兒結束 ,返回值如果有也只能是int

END

執行儲存過程:
declare  @back varchar(100) 
exec myProc '231','fds',@back output    --傳入@back的引用,在過程中為其賦值,這就是輸出引數的作用
select @back name    --查詢顯示並起別名