• 使用TVP批量插入数据


    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();

  • 相关阅读:
    授权管理-LDAP-介绍与环境搭建
    Gerrit系统框架介绍
    代码托管-gerrit-介绍与环境搭建
    springMVC
    spring,springMVC,mybatis项目添加maven后报500错
    SSM项目引入文件失败
    spring与mybatis整合
    幂等问题本质和业务场景的解决方案
    spring boot logback无感配置
    sentinel与hystrix对比
  • 原文地址:https://www.cnblogs.com/chpliy/p/8329663.html
Copyright © 2020-2023  润新知