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

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

4

2 回答 2

15

如果您的意思是SQL Server 用户定义函数。那么,的;您可以正常使用它,例如:

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

它起作用的原因是因为这是在 SQL Server 中直接调用函数的方式。

于 2013-02-24T04:00:53.003 回答
0

另一种方法:

    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;
            }
        }
    }
于 2020-04-29T20:17:10.263 回答