2012-03-26 21 views
6

Tengo una función de SQL que devuelve una INT, cuando intento llamarla a través de Dapper, siempre obtengo ningún resultado.¿Puede Dapper devolver valores de una función SQL?

La llamo así:

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

ejerza las funciones de SQL de apoyo apuesto?

Respuesta

8

Dapper debería ser compatible. ¿Estás seguro, tu función está en la base de datos correcta?

Aquí hay un ejemplo rápido de 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 

Y aquí está la función que he creado en la misma base de datos que estoy utilizando en mi conexión.

CREATE FUNCTION fx_SumTwoValues 
(@Val1 int, @Val2 int) 
RETURNS int 
AS 
BEGIN 
    RETURN (@[email protected]) 
END 
GO 
+1

El bit que estaba haciendo mal estaba llamando 'functionname' y que debería haber sido' select dbo.functionname como columnname' – ilivewithian

0

Prueba esto:

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