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;
        }

  

posted @ 2015-06-08 14:57  逊老头  阅读(438)  评论(0编辑  收藏  举报