Nabil Alhusail - 80 - Jul 12, 2014

How do I call stored procedures with Output parameters in Ormlite.Mysql ?
I’m currently generating the query (example: CALL IncreaseWeblinkClicksCount(@id,@amount)) and using db.SqlList<T>(generatedQuery, commandParameters) to get list, but this doesn’t work with parameters with direction = output.

I get the error
"OUT or INOUT argument 4 for routine -db.GetCompanySearchResult is not a variable or NEW pseudo-variable in BEFORE trigger"

OrmLite didn’t have good API’s for output params so you would’ve had to just use the underlying ADO.NET IDbConnection/IDbCommand to add them (e.g.

But I’ve just added some new API’s to help with this in this commit:

Basically it now lets you call a SP with:

var cmd = db.SqlProc(“spSearchLetters”, new { pLetter = “C” });
var pTotal = cmd.AddParam(“pTotal”, direction: ParameterDirection.Output);
var results = cmd.ConvertToList<LetterFrequency>();

Where results is populated with the returned resultset whilst pTotal.Value has the value of the out parameter.

You can also use a new overload for SqlList which takes a closure but requires a little more boilerplate:

IDbDataParameter pTotal = null;
var results = db.SqlList<LetterFrequency>(“spSearchLetters”, cmd =>
        cmd.CommandType = CommandType.StoredProcedure;
        cmd.AddParam(“pLetter”, “C”);
        pTotal = cmd.AddParam(“pTotal”, direction: ParameterDirection.Output);

This change is now on MyGet: