2012-03-26 78 views
6

我有一个SQL函数返回一个INT,当我尝试通过dapper调用它时,我总是得不到任何结果。Dapper可以从SQL函数中返回值吗?

我打电话这样说:

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

短小精悍是否支持SQL的功能呢?

回答

8

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 (@[email protected]) 
END 
GO 
+1

我做错位被调用'functionname',它应该是'选择dbo.functionname为columnname' – ilivewithian 2012-03-26 11:41:22

0

试试这个:

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