2010-08-08 13 views

Respuesta

40

Supongo que usa ADO.NET? Si es así, la clase SqlParameter tiene la propiedad "Dirección". Establezca la dirección en la salida y después de que la consulta se haya ejecutado lea el valor de ese parámetro.

Algo como esto:

using (SqlCommand cmd = new SqlCommand("MyStoredProcedure", cn)) 
{ 
    cmd.CommandType = CommandType.StoredProcedure; 
    SqlParameter parm = new SqlParameter("@pkid", SqlDbType.Int); 
    parm.Value = 1; 
    parm.Direction = ParameterDirection.Input; 
    cmd.Parameters.Add(parm); 

    SqlParameter parm2 = new SqlParameter("@ProductName", SqlDbType.VarChar); 
    parm2.Size = 50; 
    parm2.Direction = ParameterDirection.Output; // This is important! 
    cmd.Parameters.Add(parm2); 

    cn.Open(); 
    cmd.ExecuteNonQuery(); 
    cn.Close(); 
} 
+0

tengo otra pregunta que necesito para determinar que el parámetro de salida es decimal (8,2) ¡¡¡cómo !!! – shmandor

+0

No estoy seguro de entender la pregunta. Si devuelve un decimal en la variable de salida, debe establecer SqlDbType en Decimal. Si de hecho está devolviendo un decimal, puede lanzar de esta manera: (decimal) cmd.Parameters [@ "MyDecimal"]. Valor – Merrimack

+6

Sugeriría poner 'SqlConnection' y' SqlCommand' en 'using (....) {...} 'bloques como una mejor práctica –

Cuestiones relacionadas