数据库存储过程如图:
winfrom后端代码
引用using Oracle.ManagedDataAccess.Client;
public DataTable GetCommadDECSData(string oppType, string data){//参数OracleParameter[] par = new OracleParameter[]{new OracleParameter("p_transtype",OracleDbType.Varchar2,50),new OracleParameter("p_plant",OracleDbType.Varchar2,50),new OracleParameter("p_string1",OracleDbType.Varchar2),new OracleParameter("p_string2",OracleDbType.Varchar2), new OracleParameter("p_string3",OracleDbType.Varchar2),new OracleParameter("p_string4",OracleDbType.Varchar2),new OracleParameter("p_string5",OracleDbType.Varchar2),new OracleParameter("o_ds_dataset",OracleDbType.RefCursor,5000),//返回结果集参数new OracleParameter("o_res", OracleDbType.Varchar2,200)};par[0].Value = oppType;par[1].Value = "3301";par[2].Value = data;par[3].Value = "";par[4].Value = "";par[5].Value = "";par[6].Value = "";par[7].Direction = ParameterDirection.Output;//定义输出参数outputpar[8].Direction = ParameterDirection.Output;return OracleHelper.RunProcedureGetDataSet("SP_COMMON_GET_DATASET", par, ref ds).Tables[0];}
/// <summary>/// 执行存储过程,返回数据集/// </summary>/// <param name="storedProcName">存储过程名</param>/// <param name="parameters">存储过程参数</param>/// <returns>DataSet</returns>public static DataSet RunProcedureGetDataSet(string storedProcName, OracleParameter[] parameters){using (OracleConnection connection = new OracleConnection(DBUrl)){DataSet dataSet = new DataSet();connection.Open();OracleDataAdapter sqlDA = new OracleDataAdapter();sqlDA.SelectCommand = BuildQueryCommand(connection, storedProcName, parameters);sqlDA.Fill(dataSet, "dt");connection.Close();return dataSet;}}