我有以下代码,用于使用存储过程并输入字符串参数@JobNumbers来检索DataTable,@JobNumbers是动态创建的作业编号字符串(因此长度未知):
我有以下代码,用于使用存储过程并输入字符串参数@JobNumbers来检索DataTable,@JobNumbers是动态创建的作业编号字符串(因此长度未知):
using (SqlConnection connection = new SqlConnection(con))
{
SqlCommand cmd = new SqlCommand("dbo.Mystoredprocedure", connection);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add("@JobNumbers", SqlDbType.VarChar, 4000);
cmd.Parameters["@JobNumbers"].Value = JobNumber;
SqlDataAdapter da = new SqlDataAdapter(cmd);
connection.Open();
da.Fill(JobDetails);
}
如您所见,我目前将 JobNumber 参数设置为长度为 4000,这应该足够容纳约 500 个工作编号,并且应该足够使用。然而,有时可能需要更多。因此,我想知道是否有一种方法可以将参数设置为等效的 nvarchar(max) sql 参数类型?
我查看了各种类似的问题 (What's the best method to pass parameters to SQLCommand?),但没有明确说明是否可以这样做。其次,如果我在存储过程中将 @JobNumber 参数设置为 nvarchar(max),那么我是否根本不需要在 C# 中设置长度?如果我这样做,是否会像在这个问题中建议的那样产生潜在的性能问题When should "SqlDbType" and "size" be used when adding SqlCommand Parameters??