以存储过程为参数调用函数

时间:2018-09-01 05:17:36

标签: c# sql-server function stored-procedures

我在C#中具有以下功能,效果很好

private void AddQueue()
{
    SqlConnection conn = forconnection();
    conn.Open();

    SqlCommand cmd = new SqlCommand("spInsertFormIssue",conn);
    cmd.CommandType = CommandType.StoredProcedure;
    cmd.Parameters.Add("@Qdatetime", SqlDbType.DateTime).Value = DateTime.Now;

    cmd.ExecuteNonQuery();

    conn.Close();          
}

现在我想要相同的功能,但具有不同的存储过程,我想将此功能与另一个存储过程一起重用。

如何将存储过程作为参数传递?

2 个答案:

答案 0 :(得分:4)

您可以从请求参数中获取存储过程的名称和参数。

赞:

private void AddQueue(string spName, List<SqlParameter> SqlParameters)
{
    ...
    SqlCommand cmd = new SqlCommand(spName, conn);
    ...

    if (SqlParameters.Count > 0)
           cmd.Parameters.AddRange(SqlParameters.ToArray());

    ...
}

您可以这样称呼它:

List<SqlParameter> sqlParameters = new List<SqlParameter>();
sqlParameters.Add(new SqlParameter("@Qdatetime", SqlDbType.DateTime) { Value = DateTime.Now });

AddQueue("spInsertFormIssue", sqlParameters);

答案 1 :(得分:0)

只需将存储过程的名称作为参数传递即可:

string procedureName = "spInsertFormIssue";
private void AddQueue(string procedureName)
    {
        SqlConnection conn = forconnection();
        conn.Open();
        SqlCommand cmd = new SqlCommand(procedureName,conn);
        cmd.CommandType = CommandType.StoredProcedure;
        cmd.Parameters.Add("@Qdatetime", SqlDbType.DateTime).Value = DateTime.Now;
        cmd.ExecuteNonQuery();
        conn.Close();          
    }