编程那点事编程那点事

专注编程入门及提高
探究程序员职业规划之道!

SQL Server INSERT INTO EXEC详解

insert into exec语法

INSERT INTOEXEC {| ()}

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语句执行成功

说明INSERT INTO EXEC执行成功了。

未经允许不得转载: 技术文章 » 数据库 » SQL Server INSERT INTO EXEC详解