-- 几种插入数据的方法---------
1. 创建表后再插入
insert into 插入表(列...) select 列... from 表名...
2. 插入时创建表
SELECT 列... into 插入表 from 表名
3. 将存储过程或者动态批处理的结果集插入到新表(把本机当作链接服务器来用)
EXEC sp_serveroption <服务器名>,'data access',true;
SELECT * INTO 插入表 FROM OPENQUERY(<服务器名>,'EXEC {存储过程名称 | 动态批处理}') AS O;
4. 将存储过程或者动态批处理的结果集插入到新表(直接语句)
INSERT INTO 插入表 EXEC {存储过程 | 动态批处理语句}
5. 当源表有字段为 自增长时,而插入表不想 自增长时,则可以使用
INSERT INTO 插入表 SELECT ID +0,字段... FROM 源表
6. 带返回值的 INSERT 语句 OUT 语句
CREATE TABLE dbo.CustomersDim
(
KeyCol int NOT NULL IDENTITY PRIMARY KEY,
CustomerID NCHAR(50) NOT NULL,
CompanyName nvarchar(40) NOT NULL
);
DECLARE @NEWCusts TABLE
(
CustomerID NCHAR(5) NOT NULL PRIMARY KEY,
KeyCol int NOT NULL unique
);
INSERT INTO CustomersDim(CustomerID,CompanyName)
OUTPUT INSERTED.CustomerID,INSERTED.keyCol INTO @NEWCusts -- 将生成的值 插入到的 临时表
OUTPUT INSERTED.CustomerID,INSERTED.keyCol -- 直接显示值
SELECT customerid,CompanyName FROM northwind.dbo.Customers
WHERE Country =N'UK' AND CustomerID='AROUT'
SELECT * FROM @NEWCusts