How to add or modify TOP, LIMIT, FETCH FIRST clauses or ROWNUM condition programmatically?
Last modified:
This article provides source code samples of adding or modifying server-specific row limiting clauses in the query.
Please note that there is a better way to cope with this task in general, especially if you want to implement pagination of result data in your application: QueryTransformer API.
The following samples apply to all SQL syntax providers.
Read current limit and offset values:
if (syntaxProvider.IsSupportLimitCount() || syntaxProvider.IsSupportLimitOffset()) { var queryAst = sqlQuery.QueryRoot.ResultQueryAST; // for old AQB 2.x use the queryBuilder.ResultQueryAST property instead string offset; string count; if (syntaxProvider.GetQueryLimits(queryAst, out offset, out count)) { MessageBox.Show("Offset:" + offset + "\nCount: " + count); } }
Apply new values:
string offset = "10"; string count = "20"; if (syntaxProvider.IsSupportLimitCount() || syntaxProvider.IsSupportLimitOffset()) { var queryAst = sqlQuery.QueryRoot.ResultQueryAST; var newQuery = syntaxProvider.TransformQueryLimits(queryAst, offset, count); var newQuerySql = newQuery.GetSQL(); MessageBox.Show(newQuerySql); }