2010-08-08 36 views

Trả lời

40

Tôi giả sử bạn sử dụng ADO.NET? Nếu vậy, lớp SqlParameter có thuộc tính "Direction". Đặt hướng đến đầu ra và sau khi truy vấn đã thực hiện, bạn đọc giá trị từ tham số đó.

Something như thế này:

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

tôi có một câu hỏi khác tôi cần phải xác định rằng tham số đầu ra là số thập phân (8,2) như thế nào !!! – shmandor

+0

Tôi không chắc mình có hiểu câu hỏi hay không. Nếu bạn trả về một số thập phân trong biến đầu ra, bạn nên đặt SqlDbType thành Decimal. Nếu bạn đang trong thực tế trở về một số thập phân, bạn có thể đúc như thế này: (thập phân) cmd.Parameters [@ "MyDecimal"] Giá trị – Merrimack

+6

Tôi mạnh mẽ đề nghị đặt 'SqlConnection' và' SqlCommand' vào 'using (....) {...} 'khối là một thực hành tốt nhất –

Các vấn đề liên quan