小弟有一事不明 
比如我有一 商品表 内有字段 id,商品名称,数量
我想再一次提交操作中向该表内插入 n条数据 
比如 香蕉 5个,苹果 3个,橘子 2个
这样的存储过程如何写 是1条语句根据插入的条数执行n次(在.net环境下加入同一事务中),
还是说可以写成一个存储过程 传进去类似2维数组类型的参数 在存储过程内部循环插入(同一事务中)
有没有高手帮写下这2种情况的 .cs页代码 和 存储过程代码 或是有更好更快的方法 本人小菜鸟先谢谢了 
  

解决方案 »

  1.   

    你可以一次加入一条记录(可通过存储过程,只是不要有commit),但是当全部添加成功时提交事务,否则回滚。
      

  2.   

    同意gciyfzx07 说的,在CS中实现事务管理,比较容易些,如果在存储过程中使用事务的话,要一次传一批内容进存储过程,那样比较麻烦。
      

  3.   

    存储过程实现
    CREATE procedure  p_Query
    @XTBH varchar(7800)
    as
     declare @JSBH varchar(7800)
       set @XTBH=ltrim(rtrim(@XTBH))
      while(len(@XTBH)>0)
       begin
           if(charindex('/',@XTBH)>0)
             begin
               set @JSBH=substring(@XTBH,1,charindex('/',@XTBH)-1)
    set @XTBH=substring(@XTBH,len(@JSBH)+2,len(@XTBH))    else
              begin
                set @JSBH=@XTBH
                break
              end
       end
    通过数据库操作类,调用存储过程执行事务
      

  4.   

    简单,如果你愿意的话
    把你的商品类搞成XML的,将此XML作为一个参数传递给存储过程
    存储过程解析之即可
    INSERT INTO 商品表
    SELECT * FROM OPENXML,(略)
      

  5.   

    哦对,INSERT前后加上你的事务...意义不大
      

  6.   

    只能循环执行,每次写入一种货物,在同一事务下。
    例如:Item是你的货物类
    List<Item> itemList = new List<Item>();
    //香蕉 5个,苹果 3个,橘子 2个 
    itemList.Add(new Item(香蕉,5));
    itemList.Add(new Item(苹果,3));
    itemList.Add(new Item(橘子,2));public void SaveItems(List<Item> itemList)
    {
        SqlTransaction stran = ...
        ...
        foreach(Item item in itemList)
        {
            item.Insert(stran);
            //或者自己构造对一个item的插入sql也行,但是执行的时候必须要使用上面的stran,
            //以保证这些循环的操作在同一事务下
        }
        ...
    }