Dapper可以从SQL函数返回值吗?

时间:2012-03-26 11:05:06

标签: dapper

我有一个返回INT的SQL函数,当我尝试通过dapper调用它时,我总是得不到任何结果。

我这样称呼它:

var result = _connection.Query<int>("functionname", new {Parm = 123}, commandType: CommandType.StoredProcedure);

dapper是否支持sql函数?

3 个答案:

答案 0 :(得分:10)

Dapper应该支持它。您确定,您的功能在正确的数据库中吗?

这是一个快速的VB.NET示例。

   Using conn = IDbConnectionFactory.CreateFromProvider("System.Data.SqlClient", CONNECTION_STRING)
                Dim sqlCommand As String = "SELECT dbo.fx_SumTwoValues(@valueOne,@valueTwo) As SumOfTwoValues"
                conn.Open()
                Dim result = (conn.Query(Of Integer)(sqlCommand, New With {.valueOne = 1, .valueTwo = 2})).First()
                Console.WriteLine(result.ToString)
            End Using

这是我在我连接中使用的同一个数据库上创建的函数。

CREATE FUNCTION fx_SumTwoValues
( @Val1 int, @Val2 int )
RETURNS int
AS
BEGIN
  RETURN (@Val1+@Val2)
END
GO

答案 1 :(得分:2)

可以使用:

result = _connection.Query<dynamic>("SELECT dbo.functionName(@Parm)", new {Parm = 123},commandType: CommandType.Text);

答案 2 :(得分:1)

试试这个:

result = _connection.Query<dynamic>("SELECT dbo.functionName(" + fnParam + ")", commandType: CommandType.Text);