我有以下代码来使用存储过程并输入字符串参数 @JobNumbers 来拉回 DataTable,该参数是动态创建的作业编号字符串(因此长度未知):
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参数类型?
我看过各种类似的问题(将参数传递给 SQLCommand 的最佳方法是什么? https://stackoverflow.com/questions/293311/whats-the-best-method-to-pass-parameters-to-sqlcommand)但没有具体说明您是否可以(或不能)这样做。其次,如果我将存储过程中的 @JobNumber 参数设置为 nvarchar(max) ,是否有必要这样做,因此我可能根本不需要在 C# 中设置长度?如果我这样做,则会出现此问题中建议的潜在性能问题添加SqlCommand参数时什么时候应该使用“SqlDbType”和“size”? https://stackoverflow.com/questions/4624811/different-ways-of-passing-sqlcommand-parameters?
这是显式设置 nvarchar(max) 的方法:
cmd.Parameters.Add("@JobNumbers", SqlDbType.NVarChar, -1);
如果您确实关心性能,您可能需要考虑传递整数表:https://stackoverflow.com/a/10779593/465509 https://stackoverflow.com/a/10779593/465509
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)