sql 通过存储过程和自定义类型批量新增数据
1,建立存储过程
create PROCEDURE [dbo].[p_Company_Insert]
@CompanyCollection [CompanyTableType] READONLY
AS
INSERT INTO tb_Company (
[cpID]
,[cpHiID]
,[cpBuySellTypeID]
,[cpName]
,[cpShortName]
,[cpIndustry]
,[cpSell]
,[cpBuy]
,[cpAddressID]
,[cpAddress]
,[cpPost]
,[cpTel]
) SELECT
oc.[cpID]
,oc.[cpHiID]
,oc.[cpBuySellTypeID]
,oc.[cpName]
,oc.[cpShortName]
,oc.[cpIndustry]
,oc.[cpSell]
,oc.[cpBuy]
,oc.[cpAddressID]
,oc.[cpAddress]
,oc.[cpPost]
,oc.[cpTel]
FROM @CompanyCollection AS oc; GO
2,建立相对应的数据类型
/****** Object: UserDefinedTableType [dbo].[CompanyTableType] Script Date: 07/04/2014 10:20:51 ******/
CREATE TYPE [dbo].[CompanyTableType] AS TABLE(
[cpID] [int] NOT NULL,
[cpHiID] [int] NULL,
[cpBuySellTypeID] [nvarchar](200) NULL,
[cpName] [nvarchar](200) NOT NULL,
[cpShortName] [nvarchar](200) NULL,
[cpIndustry] [nvarchar](300) NULL,
[cpSell] [nvarchar](200) NULL,
[cpBuy] [nvarchar](200) NULL,
[cpAddressID] [int] NOT NULL,
[cpAddress] [nvarchar](300) NULL,
[cpPost] [nvarchar](100) NULL,
[cpTel] [nvarchar](100) NULL,
)
GO
3,执行代码
/// <summary>
/// 单条添加,将datatable作为参数传进去,返回datatable的自增长编号(调用存储过程)
/// </summary>
/// <param name="dt"></param>
/// <returns></returns>
[WebMethod]
public DataTable BuySell_Insert(DataTable dt, string token)
{
CheckLoginedS(token);
if (dt.Rows.Count > 0 && dt.Rows != null)
{
tb_BuySell bs = new tb_BuySell();
DataTable bt = bs.BuySell_Insert(dt);
return bt;
}
else
{
return null;
}
} /// <summary>
/// 把datatable当参数,批量添加数据库中,返回datatable的新增行
/// </summary>
/// <param name="tb"></param>
/// <returns></returns>
public DataTable BuySell_Insert(DataTable tb)
{
DataTable dt = null;
CMD.CommandText = "p_BuySell_Insert";
CMD.CommandType = CommandType.StoredProcedure;
CMD.Parameters.Clear();
CMD.Parameters.AddWithValue("@BuySellCollection", tb);
dt = DB.DataTable(CMD);
return dt;
}
sql 通过存储过程和自定义类型批量新增数据的更多相关文章
- 11月16日《奥威Power-BI基于SQL的存储过程及自定义SQL脚本制作报表》腾讯课堂开课啦
上周的课程<奥威Power-BI vs微软Power BI>带同学们全面认识了两个Power-BI的使用情况,同学们已经迫不及待想知道这周的学习内容了吧!这周的课程关键词—— ...
- mybatis学习之路----mysql批量新增数据
原文:https://blog.csdn.net/xu1916659422/article/details/77971867 接下来两节要探讨的是批量插入和批量更新,因为这两种操作在企业中也经常用到. ...
- 使用EF批量新增数据十分缓慢
使用EF来批量新增数据,发现效率非常的差,几千条数据时甚至需要几分钟来执行,迫于无奈使用sql来执行了. 今天偶然看到一篇关于EF的文章,才发觉原来是自己对EF不够了解的原因. 一般新增时我们是将所有 ...
- 批量新增数据(BuckCopy)
批量新增数据(BuckCopy) 使用webService传输数据时要注意,Datatable中的数据类型,以及科学计数 /// <summary> /// 批量新增数据 /// < ...
- Oracle批量新增数据最佳实践
一.需求描述 现在的项目改造过程中,从国产的Gbase数据库改造为Oracle数据库,遇到一个问题有的业务操作需要批量新增数据. 这也是一个比较常规的操作,有很多地方确实需要一次性新增多条数据.Gba ...
- MyBatis基础入门《十三》批量新增数据
MyBatis基础入门<十三>批量新增数据 批量新增数据方式1:(数据小于一万) xml文件 接口: 测试方法: 测试结果: =============================== ...
- mybatis 学习笔记(4) —— 批量新增数据
1.业务是从前台传入List<T> ,在controller层接受参数,并进行批量新增操作. 2.需要处理的细节 a) mybatis可以支持批量新增,注意数据表需要将主键设置成自增列. ...
- Sql自定义表类型批量导入数据
-- 创建自定义表类型 CREATE TYPE [dbo].[App_ProductTable] AS TABLE( [p_name] [varchar](50) NOT NULL, [p_audio ...
- SQL中存储过程和自定义函数的区别
存储过程: 存储过程可以使得对数据库的管理.以及显示关于数据库及其用户信息的工作容易得多.存储过程是 SQL 语句和可选控制流语句的预编译集合,以一个名称存储并作为一个单元处理.存储过程存储在 ...
随机推荐
- WCF中的数据契约(DataContract)
服务契约定义了远程访问对象和可供调用的方法,数据契约则是服务端和客户端之间要传送的自定义数据类型. 一旦声明一个类型为DataContract,那么该类型就可以被序列化在服务端和客户端之间传送,如下所 ...
- .net设计模式之装饰模式
概述: 装饰模式是在不必改变原类文件和使用继承的情况下,动态地扩展一个对象的功能.它是通过创建一个包装对象,也就是装饰来包裹真实的对象. 装饰模式的特点: (1) 装饰对象和真实对象有相同的接口.这样 ...
- 实战parse_ini_file()及扩展函数解析ini文件完整版
文章来源:PHP开发学习门户 地址:http://www.phpthinking.com/archives/587 在PHP站点开发的过程中,往往会用到读取ini參数配置文件,比方须要訪问一些复杂的借 ...
- 关于fork()函数的作用
(1) 先看一个实例: #include <unistd.h>; #include <sys/types.h>; main () { pid_t pi ...
- EF 事物
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.D ...
- JavaScript时间工具类
/** * JavaScript日期工具类 * @author ZhangLp */ /** * 获取当前月的第一天 */ function getCurrentMonthFirst(){ var d ...
- 使用 COM 风格的编程接口
使用COM 风格的编程接口 假设不直接使用 COM 库.不创建自己的包装.那么更可能的是使用 COM 风格的编程接口.这是由于如今很多开发商公布应用程序时.提供了首选的互操作程序集(Primary I ...
- Linux之ftp命令使用
一:前言 在达内參加暑期社会实践,达内公司免费教授了一星期的课,当时认为老师用ftp命令用的非常爽.所以回来学学了. 二:分类 有关FTP(client,server搭建这里不讲)有非常多,大体分为命 ...
- Appium根据xpath获取控件实例随笔
如文章<Appium基于安卓的各种FindElement的控件定位方法实践>所述,Appium拥有众多获取控件的方法.其中一种就是根据控件所在页面的XPATH来定位控件. 本文就是尝试通过 ...
- ichartjs 使用BUG,assign_scale:true 解决
今天纯属灌水,好久没灌水的. 最近使用了flotr2 和 ichartjs进行canvas图标的开发,都不能满足需求. 没办法,先将就用用吧.然后,既然其他大神推荐使用ichartjs,为了统一,我也 ...