在表值参数中将nvarchar长度设置为最大值

Ari*_*ule 12 c# sql stored-procedures table-valued-parameters

我想将一个表值参数作为变量传递给存储过程,并且在类SqlMetadata1 的构造函数中,可以指定要在表的列中添加的字符串的长度(long maxLength).

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

            new SqlMetaData("ValueOne", SqlDbType.NVarChar, 100),
            new SqlMetaData("ValueTwo",SqlDbType.NVarChar, 100)
        }
Run Code Online (Sandbox Code Playgroud)

如何指定'max'长度以使其与此列对应

ValueOne (nvarchar(max), not null)
Run Code Online (Sandbox Code Playgroud)

例如,与长度值100相反

Ste*_*eve 18

在MSDN上的这篇文章中,指定您可以用这种方式设置MAX大小

SqlParameter myParam = new SqlParameter("@paramName", SqlDbType.NVarChar, SqlMetaData.Max );
Run Code Online (Sandbox Code Playgroud)

请参阅上述文章的最后一个示例.
所以,在不确切知道你的SqlMetaData类是如何定义的情况下,假设最后一个参数是底层SqlParameter的大小属性,我想你可以写

Microsoft.SqlServer.Server.SqlMetaData[] tvpdefinition = 
{
    new SqlMetaData("ValueOne", SqlDbType.NVarChar, SqlMetaData.Max ),
    ....
}
Run Code Online (Sandbox Code Playgroud)

  • 顺便说一句,您可以使用`SqlMetaData.Max`而不是-1,这可能看起来更清晰. (3认同)