[原创]Sql2008 使用TVP批量插入数据
2013-07-28 10:04
295 查看
TVP(全称 :Table-Valued Parameter)
叫做表值参数(Table-Valued Parameter)是SQL2008的一个新特性。顾名思义,表值参数表示你可以把一个表类型作为参数传递到函数或存储过程里。
实例讲解:
第一步:创建一个Type类型和写入数据的原始表结构相同
第二步:创建存储过程
第三步:C#代码使用
结束。。。
其他批量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
叫做表值参数(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
相关文章推荐
- 使用JDBC在MySQL数据库中快速批量插入数据
- 使用JDBC在MySQL数据库中如何快速批量插入数据
- 使用SqlBulkCopy将DataTable中的数据批量插入数据库中
- 使用Oracle的存储过程批量插入数据
- 使用SqlBulkCopy将DataTable中的数据批量插入数据库中
- SQL2008使用CTE递归查询批量插入500万数据
- 使用JDBC在MySQL数据库中快速批量插入数据
- 使用JDBC在MySQL数据库中快速批量插入数据
- 【批量生成10万条sql数据库数据+IO流的使用】生成简单sql插入语句大量数据,以及输出流生成文件2017年
- 使用JDBC在MySQL数据库中快速批量插入数据
- mybatis在使用insert into 批量插入数据的问题
- 使用Insert Select语句批量插入数据
- [牛客网]批量插入数据,不使用replace操作
- 使用JDBC在MySQL数据库中快速批量插入数据
- ThinkPHP3.2框架使用addAll()批量插入数据的方法
- python 使用 mysqldb 批量插入数据
- 使用SqlBulkCopy类进行数据的批量插入
- SQL2008使用CTE递归查询批量插入500万数据
- 使用JDBC在MySQL数据库中快速批量插入数据
- 使用MyBatis单条和批量插入数据到Oracle的表中