我有一个这样的存储过程:
create proc wsp_test
(
@age int
, @userName varchar(30)
)
as
select userID, userName
from Users
where userName like '%' + @userName + '%'
and age > @age
这是 C# 代码:
情况1:
SqlCommand _cmd = new SqlCommand();
_cmd.Parameters.Add("age", SqlDbType.Int, 4);
_cmd.Parameters.Add("UserName", SqlDbType.VarChar, 30);
案例2:
SqlCommand _cmd = new SqlCommand();
_cmd.Parameters.Add("age", SqlDbType.Int);
_cmd.Parameters.Add("UserName", SqlDbType.VarChar);
案例3:
SqlCommand _cmd = new SqlCommand();
_cmd.Parameters.Add("age");
_cmd.Parameters.Add("UserName");
案例4:
SqlCommand _cmd = new SqlCommand();
_cmd.CommandText = "EXEC wsp_test 20, 'John'";
现在我的问题是,指定参数的数据类型或长度与性能有什么关系?
哪一个的性能最好?是否有任何来自 Microsoft 网站的文档可供我依赖?
或者是否有任何安全原因来指定参数的数据类型和长度?