代码之家  ›  专栏  ›  技术社区  ›  Lurker Indeed

CommandType.Text与CommandType.StoredProcess

  •  14
  • Lurker Indeed  · 技术社区  · 17 年前

    与仅使用文本命令相比,显式使用StoredProcedure CommandType有什么好处吗?换句话说,就是

    cmd = new SqlCommand("EXEC StoredProc(@p1, @p2)");
    cmd.CommandType = CommandType.Text;
    cmd.Parameters.Add("@p1", 1);
    cmd.Parameters.Add("@p2", 2);
    

    cmd = new SqlCommand("StoredProc");
    cmd.CommandType = CommandType.StoredProcedure;
    cmd.Parameters.Add("@p1", 1);
    cmd.Parameters.Add("@p2", 2);
    

    2 回复  |  直到 17 年前
        1
  •  8
  •   Joel Coehoorn    11 年前

    在我以前工作的地方,我们有许多批处理过程,在夜间运行。其中许多只是涉及到运行存储过程。我们过去常常使用sql server作业来安排这些任务,但现在不再使用它,而是从.Net程序调用这些过程。这使我们能够保持 我们将计划的任务放在一个地方,即使是那些与Sql Server无关的任务。

    它还允许我们在调用过程的.Net程序中构建更好的日志记录功能,以便所有过夜过程的日志记录都是一致的。存储过程将使用sql print raiserror Net程序将接收并记录这些函数。我们学到的是 CommandType.StoredProcedure 总是 CommandType.Text 为我们解决了这个问题。

    作为一个附带问题,我会在查询参数中使用显式类型。在某些情况下,让.Net尝试推断参数类型可能会导致问题。

        2
  •  3
  •   Rohit Vipin Mathews    11 年前

    如果要调用存储过程,为什么不使用 CommandType.StoredProcedure