将ParameterDirection设置为ReturnValue以获取函数

时间:2012-08-23 17:12:27

标签: sql sql-server ado.net

MSDN documentation on ADO.NET commands and parameters州:

  

ReturnValue:该参数表示来自诸如存储过程,内置函数用户定义函数等操作的返回值。

可以在SQL Server中完成吗?还是任何RDBMS?

我尝试将CommandText设置为函数名称:

using (var conn = new SqlConnection(connectionString)) {
    conn.Open();
    var cmd = conn.CreateCommand();
    cmd.CommandText = "RAND";

    var parameter = new SqlParameter();
    parameter.Direction=ParameterDirection.ReturnValue;
    cmd.Parameters.Add(parameter);

    cmd.ExecuteNonQuery();

    Console.WriteLine(
        "Random number from SQL Server: {0}",
        parameter.Value
    );
}

并收到以下SqlException:

  

找不到存储过程'RAND'。

1 个答案:

答案 0 :(得分:0)

AFAIK,你不能像这样调用“语法”内置函数,因为它们不是真正的sql对象,并且不会出现在任何对象列表中(它们是由编译器在语法上实现的)。

可以像这样调用其他函数,但不建议这两个函数,因为这是一个古老的用法,并且因为它像处理程序和过程一样处理它们只能有一个integer返回值。因此,如果你的函数返回一个非整数,它可能会变成一些无法识别的东西。