/// <summary> /// Executa a stored procedure usando a sessão. /// </summary> /// <param name="session"></param> /// <param name="procedure"></param> /// <returns>Número de linhas afetadas.</returns> public int ExecuteCommand(GDASession session, GDAStoredProcedure procedure) { IDbConnection conn = CreateConnection(session); IDbCommand cmd = CreateCommand(session, conn); int valueReturn = 0; try { procedure.Prepare(cmd, UserProvider); if (session == null && conn.State != ConnectionState.Open) { try { conn.Open(); } catch (Exception ex) { throw new GDAException(ex); } GDAConnectionManager.NotifyConnectionOpened(conn); } try { SendMessageDebugTrace(cmd.CommandText); valueReturn = cmd.ExecuteNonQuery(); } catch (Exception ex) { throw new GDAException("StoredProcedure: " + cmd.CommandText + ". --> " + ex.Message, ex); } for (int i = 0; i < cmd.Parameters.Count; i++) { procedure[i] = ((IDbDataParameter)cmd.Parameters[i]).Value; } } finally { try { cmd.Dispose(); cmd = null; } finally { if (session == null) { conn.Close(); conn.Dispose(); } } } return(valueReturn); }
public GDACursor <T> LoadValues <T>(GDASession session, GDAStoredProcedure procedure) where T : new() { IDbConnection conn = CreateConnection(session); IDbCommand cmd = CreateCommand(session, conn); cmd.Connection = conn; procedure.Prepare(cmd, UserProvider); return(new GDACursor <T>(UserProvider, session, conn, cmd, (sender, e) => { for (int i = 0; i < cmd.Parameters.Count; i++) { var dataParamter = (IDbDataParameter)cmd.Parameters[i]; if (dataParamter.Direction == ParameterDirection.Output || dataParamter.Direction == ParameterDirection.ReturnValue) { procedure[i] = ((IDbDataParameter)cmd.Parameters[i]).Value; } } })); }
public object ExecuteScalar(GDASession session, GDAStoredProcedure procedure) { IDbConnection conn = CreateConnection(session); IDbCommand cmd = CreateCommand(session, conn); object valueReturn = null; try { procedure.Prepare(cmd, UserProvider); if (session == null && conn.State != ConnectionState.Open) { try { conn.Open(); } catch (Exception ex) { throw new GDAException(ex); } GDAConnectionManager.NotifyConnectionOpened(conn); } SendMessageDebugTrace(cmd.CommandText); try { using (var executionHandler = Diagnostics.GDATrace.CreateExecutionHandler(cmd)) try { valueReturn = cmd.ExecuteScalar(); } catch (Exception ex) { executionHandler.Fail(ex); throw ex; } } catch (Exception ex) { throw new GDAException("StoredProcedure: " + cmd.CommandText + "; --> " + ex.Message, ex); } for (int i = 0; i < cmd.Parameters.Count; i++) { procedure[i] = ((IDbDataParameter)cmd.Parameters[i]).Value; } } finally { try { cmd.Dispose(); cmd = null; } finally { if (session == null) { conn.Close(); conn.Dispose(); } } } return(valueReturn); }