在SqlCommand中调用函数

时间:2013-02-24 03:41:49

标签: c# asp.net sql sql-server tsql

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功能吗?为什么?

2 个答案:

答案 0 :(得分:14)

如果您的意思是SQL Server user defined functions。然后,;您可以正常使用它:

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

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

答案 1 :(得分: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;
            }
        }
    }