怎么把存储过程返回值结果集(表)放置在临时表中

经常会遇见把存储过程的返回值放置到定义的临时表中,

现在先创建一个存储过程:

存储过程
 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啦!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值