
Nguyên bản được gửi bởi
minhitcn2
Các bạn có thể giúp mình nhận lại giá trị trả về của 1 câu truy vấn hay của 1 stored procudure ,mình loay hoay hoài mà không được các bạn ơi ,giúp mình với nhé.
để nhận giá trị trả về của một câu truy vấn thì bạn sun đã nói rồi, tôi nói thêm phần nhận giá trị trả về từ một SP bằng một ví dụ minh họa sau đây:
Sau đây là 1 ví dụ đơn giản minh họa cho việc sử dụng các lệnh ExecuteScalar để gọi thực hiện SP.
Giả sử có Server-name là ABC, Database-name là SX-TT, và table-name là sanpham gồm các field sau:
MaSanPham Char(5)
TenSanPham Char(50)
Donvitinh Char(10)
Sochai Int
Dungtich Numeric(9,0)
SP thuout_sanpham dùng để lấy tên sản phẩm và đơn vị tính của record thoả điều kiện mã sản phẩm.
Nội dung của các Stored Procedure :
Code:
CREATE PROCEDURE thuout_sanpham
@Masp char(5),
@Donvi char(50) OUTPUT,
@dvt char(10) OUTPUT
AS
SELECT @Donvi = TenSanPham , @dvt = Donvitinh FROM Sanpham Where MaSanpham = @Masp
lệnh ExecuteScalar dùng gọi thực hiện SP để trả về từng giá trị riêng lẻ. Đọan code sau đây gọi thực hiện SP thuout_sanpham, SP này có 3 tham số: 1 tham số input là @Masp dùng để đưa mã sản phẩm vào cho SP, 2 tham số output là @Donvi và @dvt dùng để lấy tên sản phẩm và đơn vị tính của mẫu tin có mã sản phẩm trùng với mã sản phẩm đưa vào qua tham số @Masp.
Code:
public static bool Get_SP(string masp)
{
SqlConnection conn = new SqlConnection();
conn.ConnectionString = "Integrated Security=SSPI;Initial Catalog=SX-TT;Data Source=ABC;";
SqlCommand cmd = new SqlCommand();
cmd.Connection = conn;
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = "thuout_sanpham";
SqlParameter p1 = new SqlParameter("@Masp",masp);
cmd.Parameters.Add(p1);
SqlParameter p2 = new SqlParameter("@Donvi",SqlDbType.Char,50);
cmd.Parameters.Add(p2);
p2.Direction = ParameterDirection.Output;
SqlParameter p3 = new SqlParameter("@dvt",SqlDbType.Char,10);
cmd.Parameters.Add(p3);
p3.Direction = ParameterDirection.Output;
try
{
conn.Open();
cmd.ExecuteScalar();
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
conn.Close();
return false;
}
MessageBox.Show(p2.Value.ToString()+" , "+p3.Value.ToString());
conn.Close();
return true;
}