TVP(全称 :Table-Valued Parameter)

叫做表值参数(Table-Valued Parameter)是SQL2008的一个新特性。顾名思义,表值参数表示你可以把一个表类型作为参数传递到函数或存储过程里。

实例讲解:

第一步:创建一个Type类型和写入数据的原始表结构相同

CREATE TYPE [dbo].[TestTVP] AS TABLE(
[TID] [bigint] NOT NULL,
[DepID] [nvarchar](100) NOT NULL,
[DepName] [nvarchar](512) NOT NULL,
[DataChange_CreateTime] [datetime] NOT NULL,
[DataChange_LastTime] [datetime] NOT NULL,
PRIMARY KEY CLUSTERED
(
[TID] ASC
)WITH (IGNORE_DUP_KEY = OFF)
)
GO

第二步:创建存储过程

CREATE PROCEDURE [dbo].[SP_TestTVP_I]
(
@TestTVP TestTVP READONLY
)
AS
DECLARE @retcode int, @rowcount int
SET LOCK_TIMEOUT 1000
SET NOCOUNT ON INSERT INTO 原始表名(列)
SELECT 表参数列
FROM @TestTVP

第三步:C#代码使用

//需要构建Table数据或者从表中查询的数据返回到Table

SqlConnection connection = new SqlConnection("");
SqlCommand command = new SqlCommand();
command.Connection = connection;
connection.Open();
command.CommandText = "[dbo].[SP_TestTVP_I]";
command.CommandType = CommandType.StoredProcedure;
SqlParameter tvpParam = command.Parameters.AddWithValue("@TestTVP", insertTab);
tvpParam.SqlDbType = SqlDbType.Structured;
command.ExecuteNonQuery();
command.Parameters.Clear();
connection.Close();

结束。。。

其他批量Insert,update,delete脚本SQL

insert into select * from table

update tab1 set tab1.col=tab2.col2 from tab1,tab2 where tab1.colA=tab2.colB

update tab1 set tab1.col=tab2.col2 from tab1 join tab2 on tab1.colA=tab2.colB

delete from t1 from t1,t2 where t1.id=t2.id

delete from t1 from t1 inner join t2 on t1.id = t2.tid

[原创]Sql2008 使用TVP批量插入数据的更多相关文章

  1. 批量插入数据(基于Mybatis的实现-Oracle)

    前言:做一个数据同步项目,要求:同步数据不丢失的情况下,提高插入性能. 项目DB框架:Mybatis.DataBase:Oracle. -------------------------------- ...

  2. SQLServer 批量插入数据的两种方法

    SQLServer 批量插入数据的两种方法-发布:dxy 字体:[增加 减小] 类型:转载 在SQL Server 中插入一条数据使用Insert语句,但是如果想要批量插入一堆数据的话,循环使用Ins ...

  3. C# 批量插入表SQLSERVER SqlBulkCopy往数据库中批量插入数据

    #region 帮助实例:SQL 批量插入数据 多种方法 /// <summary> /// SqlBulkCopy往数据库中批量插入数据 /// </summary> /// ...

  4. C#批量插入数据到Sqlserver中的四种方式

    我的新书ASP.NET MVC企业级实战预计明年2月份出版,感谢大家关注! 本篇,我将来讲解一下在Sqlserver中批量插入数据. 先创建一个用来测试的数据库和表,为了让插入数据更快,表中主键采用的 ...

  5. .Net批量插入数据到SQLServer数据库,System.Data.SqlClient.SqlBulkCopy类批量插入大数据到数据库

    批量的的数据导入数据库中,尽量少的访问数据库,高性能的对数据库进行存储. 采用SqlBulkCopy来处理存储数据.SqlBulkCopy存储大批量的数据非常的高效,将内存中的数据表直接的一次性的存储 ...

  6. sql 中的Bulk和C# 中的SqlBulkCopy批量插入数据 ( 回顾 and 粗谈 )

    通常,我们会对于一个文本文件数据导入到数据库中,不多说,上代码. 首先,表结构如下.   其次,在我当前D盘中有个文本文件名为2.txt的文件. 在数据库中,可以这样通过一句代码插入. Bulk in ...

  7. Java 批量插入数据(Oracle)

    //批量添加20000条数据用时8秒. try {    String url = "jdbc:oracle:thin:@IP:1521:orcl"; // orcl为数据库的SI ...

  8. C#批量插入数据到Sqlserver中的三种方式

    本篇,我将来讲解一下在Sqlserver中批量插入数据. 先创建一个用来测试的数据库和表,为了让插入数据更快,表中主键采用的是GUID,表中没有创建任何索引.GUID必然是比自增长要快的,因为你生 成 ...

  9. SqlServer——批量插入数据

    像Major表里面批量插入数据演示: 代码如下: Declare @I int Set @I= Begin Tran InsertData: Insert into Major values(@I,' ...

随机推荐

  1. PAT 1063 计算谱半径

    https://pintia.cn/problem-sets/994805260223102976/problems/994805267860930560 在数学中,矩阵的“谱半径”是指其特征值的模集 ...

  2. js 判断是否选中

    js的方法 window.onload = function(){ var oDiv = document.getElementById('div1'); alert(oDiv.checked) } ...

  3. 插入排序的C、C++实现

    一.插入排序 有一个已经有序的数据序列,要求在这个已经排好的数据序列中插入一个数,但要求插入后此数据序列仍然有序,这个时候就要用到一种新的排序方法--插入排序法,插入排序的基本操作就是将一个数据插入到 ...

  4. 第六周 可执行代码 以及 PSP 燃尽图 等等

    转眼已经第六周了.这周主要内容有下:(CHECKLIST) 1.完成未完成的功能点. 2.PSP. 3.站立会议. 4.燃尽图. 5.各种图(折线,饼图). 6.checkList 具体任务如下: 1 ...

  5. sqlserver 比较两个表的列

    一.问题 给了两个各有四五十个列的表,找出他们相同的列和不同的列 二.查询两个表的列,存在临时表 --#a ,#b都是临时表,当前连接断开后自动删除--RANK() OVER (ORDER BY sy ...

  6. 神奇的Redis延迟

    最近在做某业务Redis的缩容工作,涉及到数据迁移,而Redis的数据迁移看起来蛮简单的,一对一的数据迁移只需要在slave行配置masterauth 和slaveof 两个参数即可,当然迁移过程中涉 ...

  7. Java之Map的使用场景

    总结之 Map接口 的使用场景(day04) Map: Map中的集合,元素是成对存在的(理解为夫妻).每个元素由键与值两部分组成,通过键可以找对所对应的值 Map中的集合不能包含重复的键,值可以重复 ...

  8. NO.3: 尽量使用const

    1.尽量使用const修饰不会赋值操作的变量,防止 "无意义行为" 2.const成员函数遵守: bitwise constness 法则(只要函数内部不改变成员变量的,都是允许c ...

  9. java基础知识代码-------枚举类型

    package com.mon10.day22; /** * 类说明 :枚举类型,案例二 * * @author 作者 : chenyanlong * @version 创建时间:2017年10月22 ...

  10. HDFS之append数据到已存在文件中

    遇到一个问题,想往已存在的hdfs文件中直接添加数据,默认的话应该是被拒绝的.查看了一些资料,可以这样操作: 在pdfs-site.xml中添加append支持: <property> & ...