解决方案 »

  1.   

    续:
    第三:界面调用ArrayList ParaModuleId = new ArrayList();//记录纪录的条数
    ArrayList ParaSetInf = new ArrayList();//key
    ArrayList ParaSetValue = new ArrayList();//valuefor (int i=0;i<10;i++)
    {
       ParaModuleId.Add("NULL");
       //调用添加操作
       ParaSetInf.Add("EDITTYPE");
       ParaSetValue.Add("Add");//如果是删除操作改成Delete
        //如果是事务加上下面两行
        //ParaSetInf.Add("IS_TRANSACTION");
        //ParaSetValue.Add("Yes");
        //如果是编辑操作(加上下面的两句)
        //ParaSetInf.Add("UPDATED_VERSION");
        //ParaSetValue.Add("记录的版本控制 如更新时间字段");
        ParaSetInf.Add("S#");
        ParaSetValue.Add(i);
        ParaSetInf.Add("SNAME");
        ParaSetValue.Add("name");
        ParaSetInf.Add("SAGE");
        ParaSetValue.Add(23); 
        ParaSetInf.Add("SSEX");
        ParaSetValue.Add("1");
    }
    //下面加参数(大家用自己的DBhelper吧)
    IDbCommand cmd = this.DbHelper.GetStoredProcCommond(spName);
    //构建pParaModuleId数组参数
    (this.DbHelper.AddInParameter(cmd, "pParaModuleId", OracleDbType.Varchar2, ParaModuleId.ToArray(typeof(string)), ParaModuleId.Count) as OracleParameter).CollectionType = OracleCollectionType.PLSQLAssociativeArray;//指定类型很重要!!
    //构建pParaSetInf数组参数
    (this.DbHelper.AddInParameter(cmd, "pParaSetInf", OracleDbType.Varchar2, ParaSetInf.ToArray(typeof(string)), ParaSetInf.Count) as OracleParameter).CollectionType = OracleCollectionType.PLSQLAssociativeArray;
    //构建pParaSetValue数组参数
    (this.DbHelper.AddInParameter(cmd, "pParaSetValue", OracleDbType.Varchar2, ParaSetValue.ToArray(typeof(string)), ParaSetValue.Count) as OracleParameter).CollectionType = OracleCollectionType.PLSQLAssociativeArray;
    //构建vMakeMan数组参数
    this.DbHelper.AddInParameter(cmd, "vMakeMan", OracleDbType.Varchar2, SessionManagement.Sessions[request.SessionId].UserName, 20);
    //构建vExeInf数组参数
    IDbDataParameter OracleExeInf = this.DbHelper.AddOutParameter(cmd, "vExeInf", OracleDbType.Varchar2, 4000);
    this.DbHelper.ExecuteNonQuery(cmd);//调用执行
    /*如果是事务的话,如下写法
    using (IDbConnection con = this.DbHelper.CreateConnection())
    {
        con.Open();
        using (IDbTransaction transaction = con.BeginTransaction())
        {
            try
            {    
                this.DbHelper.ExecuteNonQuery(cmd);//调用执行
                transaction.Commit();
            }
            catch (Exception ea)
            {
                transaction.Rollback();
                throw ea;
            }
            finally
            {
                con.Close();
            }
        }
    }*/第四步:加精推荐后发自动生成脚本(选择表就直接产生代码)。
      

  2.   

    无聊的帖子,会推荐就奇怪了。本以为是问问题来的,结果一看是卖乖来的。技术含量很低,这种自动生成脚本好写的不得了,也有他人发过代码生成器,你却故弄玄虚来了(不推荐就不写下去),我就没看出这批量操作的意义。再看这个“//下面加参数(大家用自己的DBhelper吧)”,把DBhelper当啥了,万能的啊?