2008-08-12 31 views
27

hàm vô hướng có giá trị có thể được gọi từ NET như sau:Gọi hàm SQL bảng giá trị Từ NET

SqlCommand cmd = new SqlCommand("testFunction", sqlConn); //testFunction is scalar 
cmd.CommandType = CommandType.StoredProcedure; 
cmd.Parameters.Add("retVal", SqlDbType.Int); 
cmd.Parameters["retVal"].Direction = ParameterDirection.ReturnValue; 
cmd.ExecuteScalar(); 
int aFunctionResult = (int)cmd.Parameters["retVal"].Value; 

tôi cũng biết rằng chức năng bảng giá trị có thể được gọi trong một thời trang tương tự, ví dụ :

String query = "select * from testFunction(param1,...)"; //testFunction is table-valued 
SqlCommand cmd = new SqlCommand(query, sqlConn); 
SqlDataAdapter adapter = new SqlDataAdapter(cmd); 
adapter.Fill(tbl); 

Câu hỏi của tôi có thể được gọi là các thủ tục được lưu trữ, chẳng hạn như chức năng có giá trị vô hướng? (ví dụ: nhân rộng đoạn mã đầu tiên của tôi với hàm có giá trị bảng được gọi và nhận bảng trả về thông qua tham số ReturnValue).

+1

@ChuckConway Tại sao giảm C# khỏi tiêu đề? Đó là hợp lệ, xem xét các thẻ C# ... nhưng thẻ đó không giúp nó, để hiển thị trong google. –

Trả lời

19

Không, vì bạn cần chọn chúng. Tuy nhiên, bạn có thể tạo một trình bao bọc proc được lưu trữ, có thể đánh bại điểm của việc có một hàm bảng.

+0

Tôi không nghĩ rằng nó sẽ thực sự đánh bại quan điểm của việc có một hàm giá trị bảng. Một điểm có TVF là họ có một số đảm bảo an toàn rằng các thủ tục lưu trữ không. Một điểm khác là chúng có thể được tái sử dụng, trong khi đó là khó khăn hơn nhiều để tái sử dụng một thủ tục được lưu trữ mà không cần sao chép và dán đơn giản. – user420667

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