Drizin / DapperQueryBuilder

Dapper Query Builder using String Interpolation and Fluent API

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

[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

Please see pull request: #49

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.