Execute stored procedure with PetaPoco

Sam picture Sam · Nov 21, 2013 · Viewed 15.6k times · Source

I have a stored procedure which returns back a table value.

Here is my stored procedure:

PROCEDURE [GetPermitPendingApproval] 
    @permitYear int = NULL, 
AS
BEGIN
        SELECT [p].[ID]
          ,[p].[PermitNumber] 
          ,[p].[PermitTypeID]
          ,[p].[ApplicationDate]
          ,[u].[FirstName]
          ,[u].[MI]
          ,[u].[LastName]
          ,[u].[Suffix]
          ,[u].[ProfessionalTitle]
          ,[u].[WorksFor] 
      FROM [SciCollUser] u 
            INNER JOIN UserPermit up ON up.[UserID] = u.[ID] 
            INNER JOIN Permit p ON p.[ID] = [up].[PermitID] 
     WHERE (@permitYear IS NULL OR p.PermitYear = @permitYear) 
    ORDER BY [p].[ApplicationDate] ASC;
END

I am not sure whether we have such a way to use PetaPoco to execute a stored procedure and get a returned data as a table? Please help!

As normally I can execute a stored procedure with the follow script but it is not the way I want.

db.Execute("EXEC GetPermitPendingApproval @permitYear=2013");

Answer

anssi picture anssi · Feb 12, 2014

You need to put a semicolon before EXEC.

var result = db.Fetch<dynamic>(";EXEC GetPermitPendingApproval @@permitYear = @0", 2013);