[MySQL] How to pass LIMIT and OFFSET?
zamsler98 opened this issue · comments
When a LIMIT or a LIMIT and OFFSET are included in the query, the query builder builds SQL that isn't valid. See:
var limit = 10;
var offset = 20;
var q = cn.QueryBuilder($@"SELECT Name FROM [Production].[Product] LIMIT {limit} OFFSET {offset}");
Console.WriteLine(q.Sql);
This generate the following SQL query:
SELECT Name FROM [Production].[Product] LIMIT @p0 OFFSET @p1
When this query is run, the result is a SQL syntax error because user defined variables cannot be used in a LIMIT clause. https://dev.mysql.com/doc/refman/8.0/en/user-variables.html
If you want to embed any variables without having them automatically parameterized you can use the raw
format modifier:
var limit = 10;
var offset = 20;
var q = cn.QueryBuilder($@"SELECT Name FROM [Production].[Product] LIMIT {limit:raw} OFFSET {offset:raw}");
Let me know how it goes.