以前在写批量插入或删除时,都是循环执行存储过程来操作。这样反而影响性能,而且发生异常事务不太好控制。怎么样在存储过程里执行循环插入或循环删除。

解决方案 »

  1.   


     /// <summary>
        /// 执行多条SQL语句,实现数据库事务。
        /// </summary>
        /// <param name="SQLStringList">SQL语句的哈希表(key为sql语句,value是该语句的SqlParameter[])</param>
        public static bool ExecuteSqlTran(Hashtable SQLStringList,CommandType cmdType)
        {
            bool returnValue = false;
            using (SqlConnection conn = new SqlConnection(connectionString))
            {
                conn.Open();
                using (SqlTransaction trans = conn.BeginTransaction())
                {
                    SqlCommand cmd = new SqlCommand();
                    try
                    {
                        //循环
                        foreach (DictionaryEntry myDE in SQLStringList)
                        {
                            string cmdText = myDE.Key.ToString();
                            SqlParameter[] cmdParms = (SqlParameter[])myDE.Value;
                            PrepareCommand(cmd, cmdType, conn, trans, cmdText, cmdParms);
                            int val = cmd.ExecuteNonQuery();
                            cmd.Parameters.Clear();
                            returnValue = true;
                        }
                        trans.Commit();
                    }
                    catch
                    {
                        returnValue = false;
                        trans.Rollback();
                        throw;
                    }
                }
            }
            return returnValue;
        }
      

  2.   

    while(i<=5) 
    begin 
    -----代码 
    end 
      

  3.   

    比如 表
    table1    id  name upwd
    1     1    1
    2     2    2
    3     3    3
    6     6    6绑定GridView上,循环GridView获取选中的ID,怎么一次执行存储过程循环删除。而不是循环执行存储过程删除。
      

  4.   

    存储过程加参数,把“Id1,id2,id3,....“,传进去,可以不?
      

  5.   


    T-SQL 不支持数组,集合之类的参数。分割字符串吧老兄! :)