2010-08-08 14 views

risposta

40

Suppongo tu usi ADO.NET? In tal caso, la classe SqlParameter ha la proprietà "Direzione". Imposta la direzione per l'output e dopo che la query è stata eseguita, leggi il valore da quel parametro.

Qualcosa di simile a questo:

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

ho un'altra domanda ho bisogno di determinare che il parametro di uscita è decimale (8,2) come !!! – shmandor

+0

Non sono sicuro di aver capito la domanda. Se si restituisce un decimale nella variabile di output, è necessario impostare SqlDbType su Decimal. Se in effetti si restituisce un numero decimale è possibile eseguire il cast in questo modo: (decimale) cmd.Parameters [@ "MyDecimal"] Valore – Merrimack

+6

Suggerisco vivamente di inserire 'SqlConnection' e' SqlCommand' in 'using (....) {...} 'blocca come best practice –

Problemi correlati