1.調用返回OUT的存儲過程
a.調用OUT字符串的存儲過程;
#region 連接數據庫/// <summary>/// 連接數據庫/// </summary>/// <param name="connStatus"></param>/// <param name="dbNode"></param>/// <returns></returns>public OracleConnection OpenConn(ref string connStatus, DBConnEntity dbNode){try{if (conn == null || conn.State == ConnectionState.Closed){//默認端口if (dbNode.Port.Length < 1){dbNode.Port = "1521";}conn = new OracleConnection();//單節點if (dbNode.IP == null || dbNode.IP2 == null){conn.ConnectionString = "Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=" + dbNode.IP +")(PORT=" + dbNode.Port + "))(CONNECT_DATA=(SERVICE_NAME=" + dbNode.DbSid + ")));" +"Persist Security Info=True;User ID=" + dbNode.DbUser + ";Password=" + dbNode.DbPassW + ";";}else{//集群方式string connStr = "Data Source=(DESCRIPTION =(ADDRESS = (PROTOCOL = TCP)(HOST =" + dbNode.IP + ")(PORT = " + dbNode.Port + "))(ADDRESS = (PROTOCOL = TCP)(HOST =" + dbNode.IP2 + ")(PORT = " + dbNode.Port + "))(LOAD_BALANCE = yes)(CONNECT_DATA =(SERVER = DEDICATED)(SERVICE_NAME =" + dbNode.DbSid + ")(FAILOVER_MODE=(TYPE = session)(METHOD = basic)(RETRIES = 180)(DELAY = 5) ) ));" +"Persist Security Info=True;User ID=" + dbNode.DbUser + ";Password=" + dbNode.DbPassW + ";";conn.ConnectionString = connStr;}conn.Open();connStatus = "success";}else{connStatus = "success";}}catch (Exception ex){connStatus = ex.Message;conn = null;}return conn;}
//執行存儲過程public string execCancelJCErpProcedure(string targetId, DBConnEntity dbNode, ref string strNGPASS){string returnMsg = "";try{conn = OpenConn(ref strNGPASS, dbNode);if (strNGPASS == "success"){using (conn){using (OracleCommand cmd =new OracleCommand("存儲過程名稱", conn)){cmd.CommandType = CommandType.StoredProcedure;OracleParameter locatorId =new OracleParameter("locatorId", OracleDbType.Varchar2);locatorId.Direction = ParameterDirection.Input;locatorId.Value = targetId;cmd.Parameters.Add(locatorId);OracleParameter vs_msg =new OracleParameter("resultOut", OracleDbType.Varchar2, 4000);//返回字符串時,需要設置字符串大小vs_msg.Direction = ParameterDirection.Output;cmd.Parameters.Add(vs_msg);cmd.ExecuteNonQuery();returnMsg = vs_msg.Value.ToString(); }}}//連接數據庫異常else{strNGPASS = "NG";returnMsg = strNGPASS; //連接數據庫異常描述}}catch (Exception ex){strNGPASS = "NG";returnMsg = ex.Message;}return returnMsg;}
b.調用OUT 數值的存儲過程;
public int execZLProcedure(string proceName, DBConnEntity dbNode,string model_name, ref string strNGPASS){int batch_Id = 0;try{conn = OpenConn(ref strNGPASS, dbNode);//連接數據庫;if (strNGPASS == "success"){using (conn){using (OracleCommand cmd = new OracleCommand(proceName, conn)) //proceName存儲過程名稱{cmd.CommandType = CommandType.StoredProcedure;OracleParameter modelName = new OracleParameter("modelName", OracleDbType.Varchar2);modelName.Direction = ParameterDirection.Input;modelName.Value = model_name;cmd.Parameters.Add(modelName);OracleParameter batchId = new OracleParameter("batchId", OracleDbType.Int64);//batchId.Direction = ParameterDirection.Output;cmd.Parameters.Add(batchId);cmd.ExecuteNonQuery();batch_Id = int.Parse(batchId.Value.ToString());strNGPASS = "OK";}}}else //連接數據庫異常{strNGPASS = "NG";}}catch (Exception ex){strNGPASS = "NG";}return batch_Id;}