怎么把存儲過程返回值結果集(表)放置在臨時表中


經常會遇見把存儲過程的返回值放置到定義的臨時表中,

現在先創建一個存儲過程:

存儲過程
 1 CREATE PROC [dbo].[usp_GetOrderInfo]
 2 @CustomerID nchar(5),
 3 @StartDate datetime,
 4 @EndDate datetime,
 5 @rowsAffect int output
 6 AS
 7 BEGIN
 8     SET NOCOUNT ON;
 9     DECLARE @err int;
10     SELECT oo.CustomerID,oo.EmployeeID,oo.OrderDate,oo.ShipName FROM Orders oo where oo.OrderDate>=CONVERT(VARCHAR(10),@StartDate,120) 
11     AND oo.OrderDate <=CONVERT(VARCHAR(10),@EndDate,120) AND oo.CustomerID =@CustomerID;
12     SET @rowsAffect =@@ROWCOUNT;
13     SET @err = @@ERROR;
14     RETURN @err;
15 END

現在我們調用剛剛創建的存儲過程:

調用段
1 DECLARE @CustomerID NCHAR(5);
2 DECLARE @StartDate DATETIME;
3 DECLARE @EndDate DATETIME;
4 DECLARE @RowsAffect INT;
5 DECLARE @a int;
6 SET @CustomerID ='ALFKI';
7 SET @StartDate='1900-01-01';
8 SET @EndDate='2000-01-01';
9 EXEC @a= GetOrderInfo @CustomerID,@StartDate,@EndDate,@RowsAffect OUTPUT;

此時可以發現,SQL  窗口下方結果集有2個窗口,一個是執行此存儲過程返回的結果集,一個是存儲過程的輸出參數和返回值;

現在我們想把結果集放到臨時表中:

第一步創建臨時表:

創建臨時表
1 CREATE TABLE #customers
2 (customerid nchar(5),
3 EmployeeID int,
4 OrderDate datetime,
5 ShipName nvarchar(40)
6 )

調用段:

調用段
 1 DECLARE @CustomerID NCHAR(5);
 2 DECLARE @StartDate DATETIME;
 3 DECLARE @EndDate DATETIME;
 4 DECLARE @RowsAffect INT;
 5 DECLARE @a int;
 6 SET @CustomerID ='ALFKI';
 7 SET @StartDate='1900-01-01';
 8 SET @EndDate='2000-01-01';
 9 INSERT INTO #customers(customerid,EmployeeID,OrderDate,ShipName)
10 EXEC @a= GetOrderInfo @CustomerID,@StartDate,@EndDate,@RowsAffect OUTPUT;
11 SELECT @rowsAffect ,@a

就這樣就ok啦!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM