码迷,mamicode.com
首页 > 数据库 > 详细

SQL表值参数批量插入

时间:2017-06-21 23:03:00      阅读:221      评论:0      收藏:0      [点我收藏+]

标签:sts   weight   exe   color   basic   存在   rom   roc   步骤   

--使用表值参数向另一数据表中批量插入数据

USE DF17DataPro
--创建并使用表值参数步骤
/*
1.创建表类型并定义表结构。
有关如何创建 SQL Server 类型的信息,请参阅用户定义表类型。有关如何定义表结构的详细信息,请参阅 CREATE TABLE (Transact-SQL)。
2.声明具有表类型参数的例程。有关 SQL Server 例程的详细信息,请参阅 CREATE PROCEDURE (Transact-SQL) 和 CREATE FUNCTION (Transact-SQL)。
3.声明表类型变量,并引用该表类型。有关如何声明变量的信息,请参阅 DECLARE @local_variable (Transact-SQL)。
4.使用 INSERT 语句填充表变量。有关如何插入数据的详细信息,请参阅使用 INSERT 和 SELECT 添加行。
5.创建并填充表变量后,可以将该变量传递给例程。
*/

--具体实现
-------------------------------------------------------------
--1.创建表值参数类型BulkValue

IF EXISTS (SELECT * FROM SYS.TYPES st 
JOIN SYS.SCHEMAS ss 
ON st.SCHEMA_ID=ss.SCHEMA_ID
WHERE st.name=N[BulkValue] AND ss.name=Ndbo
)
DROP TYPE [dbo].[BulkValue]
GO

CREATE TYPE BulkValue AS TABLE 
( 
IDFlag INT , --主键ID
RecvTime FLOAT NOT NULL , --接收时间,不存在时间相同的数据
AA INT NOT NULL,
CA INT NULL, 
FlightID Varchar(10) NULL, --航班号
)

 

-------------------------------------------------------------
--(2)声明具有表类型参数的存储过程
-------------------------------------------------------------

IF exists (SELECT * FROM SYS.PROCEDURES WHERE OBJECT_ID = OBJECT_ID(N[dbo].[InsertDBBulkProc]))
DROP PROC [dbo].InsertDBBulkProc
go 
-- 创建一个过程来获得该表值参数数据 
CREATE PROCEDURE InsertDBBulkProc 
@TVP BulkValue READONLY
AS 
SET NOCOUNT ON
INSERT INTO BasicMsg (RecvTime,AA,CA,FlightID )
SELECT RecvTime,AA,CA,FlightID
FROM @TVP;
GO

-------------------------------------------------------------
--(3) 声明一个变量来引用该类型
-------------------------------------------------------------

DECLARE @LocationTVP 
AS BulkValue ;

-------------------------------------------------------------
--(4) 将数据加入变量中
-------------------------------------------------------------

INSERT INTO @LocationTVP (RecvTime,AA,CA,FlightID)
SELECT RecvTime,AA,CA,FlightID
FROM 
[dbo].[BasicMsg20170518];

 

其中,BasicMsg20170518为源数据表。

-------------------------------------------------------------
--(5) 把表变量的数据传递给存储过程
-------------------------------------------------------------

EXEC InsertDBBulkProc @LocationTVP;
GO

 

SQL表值参数批量插入

标签:sts   weight   exe   color   basic   存在   rom   roc   步骤   

原文地址:http://www.cnblogs.com/Miss-Bueno/p/7061948.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!