insert into exec语法
INSERT INTO
EXEC { | ( )}
INSERT INTO EXEC语句可以把存储过程或动态批处理返回的结果集直接保存到现有表中。当你需要把存储过程或动态批处理的结果集保存后在进一步处理而不是直接返回给客户端时,这个语句非常方便。
下面我们通过一个示例来演示INSERT INTO EXEC的用法
创建以下存储过程,以返回数据集
USE Northwind;
GO
--用于分页的索引
IF INDEXPROPERTY(OBJECT_ID('dbo.Orders'),'idx_od_oid_i_cid_eid','IndexID') is not null drop INDEX dbo.Orders.idx_od_oid_i_cid_eid;
GO
CREATE INDEX idx_od_oid_i_cid_eid on dbo.Orders(OrderDate,OrderID,CustomerID,EmployeeID,2);
GO
--第一页的行
if OBJECT_ID('dbo.usp_firstrows') is not null DROP PROC dbo.usp_firstrows;
GO
CREATE PROC dbo.usp_firstrows
@n AS int = 10 --行数
AS
SELECT TOP(@n) ROW_NUMBER() OVER(ORDER BY OrderDate,OrderID) as RowNum,
OrderID,OrderDate,CustomerID,EmployeeID
FROM dbo.Orders
ORDER BY OrderDate,OrderID;
GO创建以下表用于接收数据
create table exectable ( RowNum int not null PRIMARY KEY, OrderID int not null UNIQUE, OrderDate DATETIME, CustomerID NCHAR(5), EmployeeID INT )
执行INSERT INTO EXEC语句
insert into exectable exec dbo.usp_firstrows @n=100
最后我们看下exectable表中的数据

说明INSERT INTO EXEC执行成功了。