/// <summary> /// 執行存儲過程獲取帶有Out的參數 /// </summary> /// <param name="cmdText">存儲過程名稱</param> /// <param name="outParameters">輸出的參數名</param> /// <param name="oracleParameters">所傳參數(必須按照存儲過程參數順序)</param> /// <param name="strConn">鏈接字符串</param> /// <returns></returns> public static string ExecToStoredProcedureGetString(string cmdText, string outParameters, OracleParameter[] oracleParameters, string strConn) { using (OracleConnection conn = new OracleConnection(strConn)) { //OracleParameter[] SqlParameters = { // new OracleParameter("ZYH", OracleDbType.Varchar2,"",ParameterDirection.Input), // new OracleParameter("YJJE", OracleDbType.Varchar2,100,"", ParameterDirection.Output) //}; OracleCommand cmd = new OracleCommand(cmdText, conn); cmd.CommandType = CommandType.StoredProcedure; cmd.Parameters.AddRange(oracleParameters); conn.Open(); cmd.ExecuteNonQuery(); conn.Close(); return cmd.Parameters[outParameters].Value.ToString(); } } /// <summary> /// 執行存儲過程獲取帶有Out的游標數據集 /// </summary> /// <param name="cmdText">存儲過程名稱</param> /// <param name="outParameters">輸出的游標名</param> /// <param name="oracleParameters">所傳參數(必須按照存儲過程參數順序)</param> /// <param name="strConn">鏈接字符串</param> /// <returns></returns> public static DataTable ExecToStoredProcedureGetTable(string storedProcedName, OracleParameter[] oracleParameters, string strConn) { using (OracleConnection conn = new OracleConnection(strConn)) { OracleCommand cmd = new OracleCommand(storedProcedName, conn); cmd.CommandType = CommandType.StoredProcedure; cmd.Parameters.AddRange(oracleParameters); OracleDataAdapter oda = new OracleDataAdapter(cmd); conn.Open(); DataSet ds = new DataSet(); oda.Fill(ds); conn.Close(); return ds.Tables[0]; } } /// <summary> /// 執行存儲過程沒有返回值 /// </summary> /// <param name="cmdText">存儲過程名稱</param> /// <param name="outParameters">參數</param> /// <param name="oracleParameters">所傳參數(必須按照存儲過程參數順序)</param> /// <param name="strConn">鏈接字符串</param> /// <returns></returns> public static void ExecToStoredProcedure(string cmdText, OracleParameter[] oracleParameters, string strConn) { using (OracleConnection conn = new OracleConnection(strConn)) { OracleCommand cmd = new OracleCommand(cmdText, conn); cmd.CommandType = CommandType.StoredProcedure; cmd.Parameters.AddRange(oracleParameters); conn.Open(); cmd.ExecuteNonQuery(); conn.Close(); } } /// <summary> /// 執行sql獲取數據集 /// </summary> /// <param name="cmdText">sql語句</param> /// <param name="oracleParameters">所傳參數(必須按照存儲過程參數順序)</param> /// <param name="strConn">鏈接字符串</param> /// <returns></returns> public static DataTable ExecToSqlGetTable(string cmdText, OracleParameter[] oracleParameters, string strConn) { using (OracleConnection conn = new OracleConnection(strConn)) { OracleCommand cmd = new OracleCommand(cmdText, conn); cmd.CommandType = CommandType.Text; cmd.Parameters.AddRange(oracleParameters); OracleDataAdapter oda = new OracleDataAdapter(cmd); conn.Open(); DataSet ds = new DataSet(); oda.Fill(ds); conn.Close(); return ds.Tables[0]; } } /// <summary> /// 執行sql獲取數據集 /// </summary> /// <param name="cmdText">sql語句</param> /// <param name="oracleParameters">所傳參數(必須按照存儲過程參數順序)</param> /// <param name="strConn">鏈接字符串</param> /// <returns></returns> public static DataTable ExecToSqlGetTable(string cmdText, string strConn) { using (OracleConnection conn = new OracleConnection(strConn)) { OracleCommand cmd = new OracleCommand(cmdText, conn); cmd.CommandType = CommandType.Text; OracleDataAdapter oda = new OracleDataAdapter(cmd); conn.Open(); DataSet ds = new DataSet(); oda.Fill(ds); conn.Close(); return ds.Tables[0]; } } /// <summary> /// 執行sql執行增刪改 /// </summary> /// <param name="cmdText">sql語句</param> /// <param name="oracleParameters">所傳參數(必須按照存儲過程參數順序)</param> /// <param name="strConn">鏈接字符串</param> /// <returns></returns> public static int ExecToSqlNonQuery(string cmdText, OracleParameter[] oracleParameters, string strConn) { using (OracleConnection conn = new OracleConnection(strConn)) { OracleCommand cmd = new OracleCommand(cmdText, conn); cmd.CommandType = CommandType.Text; cmd.Parameters.AddRange(oracleParameters); conn.Open(); int result = cmd.ExecuteNonQuery(); conn.Close(); return result; } } /// <summary> /// 執行sql執行增刪改 /// </summary> /// <param name="cmdText">sql語句</param> /// <param name="oracleParameters">所傳參數(必須按照存儲過程參數順序)</param> /// <param name="strConn">鏈接字符串</param> /// <returns></returns> public static int ExecToSqlNonQuery(string cmdText, string strConn) { using (OracleConnection conn = new OracleConnection(strConn)) { OracleCommand cmd = new OracleCommand(cmdText, conn); cmd.CommandType = CommandType.Text; conn.Open(); int result = cmd.ExecuteNonQuery(); conn.Close(); return result; } }
/// <summary>
/// 執行多條Sql獲取返回值
/// </summary>
/// <param name="listSelectSql"></param>
/// <returns></returns>
public DataSet Query(List<string> listSelectSql,string strConn)
{
using (OracleConnection conn = new OracleConnection(strConn)) { OracleCommand cmd = new OracleCommand(); StringBuilder strSql = new StringBuilder(); strSql.Append("begin "); for (int i = 0; i < listSelectSql.Count; i++) { string paraName = "p_cursor_" + i; strSql.AppendFormat("open :{0} for {1}; ", paraName, listSelectSql[i]); cmd.Parameters.Add(paraName, OracleDbType.RefCursor, DBNull.Value, ParameterDirection.Output); } strSql.Append("end;"); cmd.Connection = conn; cmd.CommandText = strSql.ToString(); OracleDataAdapter oda = new OracleDataAdapter(); oda.SelectCommand = cmd; conn.Open(); DataSet ds = new DataSet(); oda.Fill(ds); conn.Close(); return ds; } }