Hola, este es el codigo que uso:
Código:
//Parametros
SqlParameter[] parametros = new SqlParameter[2];
parametros[0] = new SqlParameter("@Accion", "1");
parametros[1] = new SqlParameter("@Salida", "");
parametros[1].Direction = ParameterDirection.Output;
//Conexion
SqlConnection cn = new SqlConnection("server=XXX;database=XXX;uid=XX;pwd=XX");
//Comand
SqlCommand comando = new SqlCommand();
comando.CommandType = CommandType.StoredProcedure;
comando.CommandText = "spConsultarEmpleados";
comando.Connection = cn;
//Le asignamos los parametros al command
for(int i=0;i<parametros.Length;i++)
{
comando.Parameters.Add(parametros[i]);
}
//Llenamos un dataset
DataSet ds = new DataSet();
SqlDataAdapter adap = new SqlDataAdapter(comando);
adap.Fill(ds);
dataGridView1.DataSource = ds.Tables[0];
Normalmente despues de .fill los parametros toman valor.
Cuando se ejecuta el procedimiento y se genera un error en sql, algo asi como cuando hay registro duplicado, y ese error es asignado al parametro de salida, ahi si lo puedo ver, pero si le asigno un valor asi como lo estoy haciendo el procedimiento almacenado, no lo puedo ver.
Para ver el valor de parametro despues del .fill(), solo digo