Como hago para invocar desde c# un procedimiento almacenado dinámico y mostrarlo en un datagridview

/*EL CODIGO ORACLE*/

procedure usp_listar (
P_cod_tarifario in rb_seex_tarifario.proveedor%type,
nombre_tarifario in rb_seex_tarifario.nombre_tarifario%type,
cur_servicioexcel out t_cursor)
is
stmt_str varchar2(200);
begin
stmt_str := 'select cod_tarifario,nombre_tarifario from rb_seex_tarifario where cod_tarifario  = P_cod_tarifario ';
execute immediate stmt_str
using
cod_tarifario, nombre_tarifario;
end usp_listar;

/*CODIGO C#*/

DataSet ds = new DataSet();
OracleConnection Conn = new OracleConnection();
OracleCommand objCmd = new OracleCommand();
objCmd.Connection = Conn;
objCmd.CommandText = "SERVICIO_EXCEL_FINAL.USP_LISTAR";
objCmd.CommandType = CommandType.StoredProcedure;
objCmd.Parameters.Add("COD_TARIFARIO", OracleDbType.Int32);
try
{
Conn.Open();
objCmd.ExecuteNonQuery();
OracleDataAdapter da = new OracleDataAdapter(objCmd);
da.Fill(ds);
}
catch (Exception ex)
{
System.Console.WriteLine("Exception: {0}", ex.ToString());
}
Conn.Close();

Respuesta

Que tal lo primero que debes hacer es instalar el conector de ADO NET para Oracle.

Despues de eso haces las acciones que debes hacer como es tu clase conexion y la controladora donde tendras los metodos y en los cuales llamaras tus procedimientos almacenados.

Ejemplo

public bool validar(usuario nuevo_usuario,string num_auto)
        {
            OracleConnection conn = new OracleConnection();
            conn.ConnectionString = "Data Source=" + nuevo_usuario.datasource + ";User id=" + nuevo_usuario.user + ";Password=" + nuevo_usuario.password + ";";
            String procedimiento = "valida_ingreso";
            OracleCommand cmd = new OracleCommand(procedimiento, conn);
            cmd.CommandType = CommandType.StoredProcedure;
            OracleParameter val = new OracleParameter("NUM", OracleDbType.Int64, 50);
            long numero = Int64.Parse(num_auto);
            val.Value = numero;
            cmd.Parameters.Add(val);
            try
            {
                conn.Open();
                int exito = cmd.ExecuteNonQuery();
                //El valor devuelto es -1, para el caso de UPDATE, INSERT y DELETE devuelve el numero de filas afectadas con la transacción.
                if (exito == -1) { conn.Close(); return true; } else { conn.Close(); return false; }
            }
            catch (OracleException ex)
            {
                return false;
            }
        }

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas