2012-03-26 64 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); 
相關問題