2014-04-07 22 views
9

Tôi muốn chuyển một tham số có giá trị bảng như một biến cho một thủ tục được lưu trữ và trong hàm dựng của lớp SqlMetadata người ta có thể chỉ định độ dài (long maxLength) của chuỗi mà bạn muốn thêm trong cột của bảng.Đặt chiều dài nvarchar thành tối đa trong bảng tham số có giá trị

Microsoft.SqlServer.Server.SqlMetaData[] tvpdefinition = 
     { 

      new SqlMetaData("ValueOne", SqlDbType.NVarChar, 100), 
      new SqlMetaData("ValueTwo",SqlDbType.NVarChar, 100) 
     } 

Làm thế nào người ta có thể đi về cách xác định chiều dài 'tối đa' để nó tương ứng với cột này

ValueOne (nvarchar(max), not null) 

như trái ngược với một giá trị chiều dài 100 ví dụ

Trả lời

13

In this article on MSDN nó được quy định bạn có thể đặt kích thước MAX theo cách này

SqlParameter myParam = new SqlParameter("@paramName", SqlDbType.NVarChar, SqlMetaData.Max); 

Xem cuối cùng ví dụ trên bài viết đã đề cập ở trên.
Vì vậy, mà không biết chính xác có bao lớp SqlMetaData của bạn được xác định, và giả sử rằng các tham số cuối cùng là propery kích thước của một SqlParameter cơ bản, tôi nghĩ bạn có thể viết

Microsoft.SqlServer.Server.SqlMetaData[] tvpdefinition = 
{ 
    new SqlMetaData("ValueOne", SqlDbType.NVarChar, SqlMetaData.Max), 
    .... 
} 
+1

tôi chỉ kiểm tra mà bây giờ cũng ... nên đã kiểm tra trước khi yêu cầu. Xin lỗi – Arianule

+0

Không cần xin lỗi khi không có hành vi phạm tội. Ngược lại bạn là một câu hỏi thú vị, và đó là một cách có giá trị để nâng cao kiến ​​thức của tôi. – Steve

+2

BTW, bạn có thể sử dụng 'SqlMetaData.Max' thay vì -1, có thể trông hơi sạch hơn. –

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