调用SqlCommand中的函数

本文关键字:函数 SqlCommand 调用 | 更新日期: 2023-09-27 18:00:52

public void CreateMySqlCommand() 
 {
    SqlCommand myCommand = new SqlCommand();
    myCommand.CommandText = "SELECT * FROM Categories ORDER BY CategoryID";
    myCommand.CommandTimeout = 15;
    myCommand.CommandType = CommandType.Text;
 }

我可以在myCommand中使用Sql Server函数吗。CommandText以及为什么?

调用SqlCommand中的函数

如果您的意思是,SQL Server用户定义的函数。然后,;你可以像一样正常使用它

myCommand.CommandText = "SELECT fn_Yourfunctionname(@parameternames)";
myCommand.CommandType = CommandType.Text;
myCommand.Parameters.Add(new SqlParameter("@parameternames", ...

它之所以有效,是因为这是在SQL Server中直接调用函数的方式。

另一种方法:

    public T ExecuteScalarFunction<T>(string functionName, List<SqlParameter> parameters, SqlDbType returnSqlType) where T : new()
    {
        using (var conn = new SqlConnection(CTX.Database.GetDbConnection().ConnectionString))
        {
            if (conn.State != ConnectionState.Open)
                conn.Open();
            using (var cmd = new SqlCommand(functionName, conn)) { 
                cmd.CommandType = CommandType.StoredProcedure;
                SqlCommandBuilder.DeriveParameters(cmd);
                foreach (var parameter in parameters)
                {
                    cmd.Parameters.Add(parameter);
                }
                cmd.Parameters.Add("@RETURN_VALUE", returnSqlType).Direction = ParameterDirection.ReturnValue;
                cmd.ExecuteNonQuery();
                return (T)cmd.Parameters["@RETURN_VALUE"].Value;
            }
        }
    }