public static DeriveParameters ( System.Data.OracleClient.OracleCommand command ) : void | ||
command | System.Data.OracleClient.OracleCommand | |
return | void |
private DbParameter[] DiscoverSpParameterSet(string strProcedureName, bool includeReturnValueParameter) { DbCommand dbCommand = new DbCommand(); dbCommand.Connection = mConn; dbCommand.CommandText = strProcedureName; dbCommand.CommandType = CommandType.StoredProcedure; try { if (mConn.State == ConnectionState.Closed) { mConn.Open(); } // 查找存储过程的参数 DbCommandBuilder.DeriveParameters(dbCommand); // 如果包含返回Result value参数(自动生成的,不需要传进去),如果有,则删除 // Oracle中,function产生此参数,procedure则不产生 // SQL SERVER中,procedure 产生此参数,function 未测试,应该也会有 if (includeReturnValueParameter) { dbCommand.Parameters.RemoveAt(0); } // 返回找到的参数的副本 DbParameter[] discoveredParameters = new DbParameter[dbCommand.Parameters.Count]; dbCommand.Parameters.CopyTo(discoveredParameters, 0); // 参数一刀两断,没有关系了. dbCommand.Parameters.Clear(); // 初始化各参数为DBNull foreach (DbParameter discoveredParameter in discoveredParameters) { discoveredParameter.Value = DBNull.Value; } return(discoveredParameters); } catch (Exception e) { WriteLogInfo("error on " + this.GetType().Name + " GetStoredProcedureParamters:" + strProcedureName + "\r\n" + e.Message); return(null); } }