想知道我是否在同一个使用块中执行多个存储过程,将参数传递给每个存储过程,还是需要为每个存储过程显式添加相同的参数。
using (sqlConnection)
{
SQLCommand cmd = new SQLCommand("sproc1", sqlConnection)
cmd.CommandType = CommandType.StoredProcedure;
//adding parameters for the first SQL query
cmd.Parameters.Add(new SQLParameter("@ID", id));
cmd.Parameters.Add(new SQLParameter("@Sport", sportId));
cmd.Parameters.Add(new SQLParameter("@Player", playerId));
cmd.ExecuteNonQuery();
cmd.CommandText = "sproc2";
cmd.CommandType = CommandType.StoredProcedure;
//Will parameters from above be passed in this stored procedure, or will they need to be added again?
cmd.ExecuteNonQuery();
};
答案 0 :(得分:2)
是。但是出于三个维护原因我不会这样做:
这是不正常的(至少我从未见过这个),所以这些代码可能会被其他开发者或未来的你误读。
如果仅重用某些参数但不是全部参数,则最终会为每个存储过程添加新的Add()
。然后,当您阅读代码时,很难跟踪,哪些确切的参数用于任何给定的存储过程。
不同的存储过程调用不再是模块化的。每个都依赖于之前添加到SQLCommand
。
如果你确实发现自己在不同的存储过程调用之间重用了一组变量,那么我只想创建一个方法,将这些变量添加到SQLCommand
并返回SQLCommand
,然后调用每个存储过程的方法。
是的,这是一个额外的处理时间,但它会使您的代码更易于维护。