System.Data.OracleClient.OracleCommandBuilder.DeriveParameters C# (CSharp) Method

DeriveParameters() public static method

public static DeriveParameters ( System.Data.OracleClient.OracleCommand command ) : void
command System.Data.OracleClient.OracleCommand
return void
		public static void DeriveParameters (OracleCommand command) {
			DeriveParameters((AbstractDbCommand)command);
		}

Usage Example

Example #1
0
        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);
            }
        }