Vì vậy, đây là thỏa thuận. Trong cơ sở dữ liệu của chúng tôi, chúng tôi bọc hầu hết các lần đọc của chúng tôi (tức là các câu lệnh chọn) trong các hàm có giá trị bảng cho mục đích bảo mật và mô đun. Vì vậy, tôi đã có một TVF xác định một hoặc nhiều tham số tùy chọn.Cách chuyển từ khóa mặc định cho bảng có giá trị gọi hàm trong ADO.NET
Tôi tin rằng có một TVF với các thông số defaulted uỷ quyền sử dụng của từ khóa default
khi gọi TVF như vậy:
select * from fn_SampleTVF(123, DEFAULT, DEFAULT)
Đó là tốt, mọi thứ hoạt động trong phân tích truy vấn, nhưng khi nói đến thời gian để thực sự thực hiện yêu cầu này từ ADO.NET, tôi không chắc chắn làm thế nào để tạo ra một tham số sql mà thực sự đặt từ default
vào sql trả về.
Tôi có một cái gì đó gần như thế này bây giờ:
String qry = "select * from fn_SampleTVF(@requiredParam, @optionalParam)";
DbCommand command = this.CreateStoreCommand(qry, CommandType.Text);
SqlParameter someRequiredParam = new SqlParameter("@requiredParam", SqlDbType.Int);
someRequiredParam.Value = 123;
command.Parameters.Add(someRequiredParam);
SqlParameter optionalParam = new SqlParameter("@optionalParam", SqlDbType.Int);
optionalParam.Value = >>>> WTF? <<<<
command.Parameters.Add(optionalParam);
Vì vậy, bất cứ ai có bất kỳ ý tưởng làm thế nào để vượt qua default
đến TVF?
giải pháp tốt nhất mà tôi đã nhìn thấy cái xa là để tránh sử dụng các điều khoản mặc định trong định nghĩa tham số TVF, chuyển vào các giá trị rỗng như Kevin đề xuất và tạo các giá trị mặc định theo cách thủ công trong cơ thể TVF của bạn. Đây là một bài báo tôi tìm thấy (nó về Sprocs, nhưng vấn đề là như nhau). http://social.msdn.microsoft.com/Forums/en/sqldataaccess/thread/3825fe1c-7b7e-4642-826b-ea024804f807 Như với tất cả những thứ khác liên quan đến Microsoft, việc này hoạt động sẽ liên quan đến một nửa giải pháp thay thế. – Mason