Determination of presence of the INTO clause in a query
Last modified:
The SyntaxProvider.DenyIntoClause property set to true prescribes Active Query Builder to raise an exception on parsing a query with the INTO clause. But sometimes you may want to determine if such clause is present in a query instead of raising an exception. Use the following code to determine it's presence.
var hasInto = false;
// MySql
if (queryBuilder1.SyntaxProvider is MySQLSyntaxProvider)
{
var usqList = queryBuilder1.GetUnionSubQueryList();
foreach (var unionSubQuery in usqList)
{
var extender = (MySQLSubQuerySelectExpressionExtender) unionSubQuery.QueryAST.Extender;
hasInto = extender.IntoFile != null;
if (hasInto) break;
}
}
// Access
else if (queryBuilder1.SyntaxProvider is MSAccessSyntaxProvider)
{
var usqList = queryBuilder1.GetUnionSubQueryList();
foreach (var unionSubQuery in usqList)
{
var extender = (AccessSubQuerySelectExpressionExtender) unionSubQuery.QueryAST.Extender;
hasInto = extender.Into != null;
if (hasInto) break;
}
}
// MS SQL Server
else if (queryBuilder1.SyntaxProvider is MSSQLSyntaxProvider)
{
var usqList = queryBuilder1.GetUnionSubQueryList();
foreach (var unionSubQuery in usqList)
{
var extender = (MSSQLSubQuerySelectExpressionExtender)unionSubQuery.QueryAST.Extender;
hasInto = extender.Into != null;
if (hasInto) break;
}
}
// PostgreSql
else if (queryBuilder1.SyntaxProvider is PostgreSQLSyntaxProvider)
{
var usqList = queryBuilder1.GetUnionSubQueryList();
foreach (var unionSubQuery in usqList)
{
var extender = (PostgreSQLSubQuerySelectExpressionExtender)unionSubQuery.QueryAST.Extender;
hasInto = extender.IntoClause != null;
if (hasInto) break;
}
}
MessageBox.Show(hasInto ? "INTO Clause is found" : "INTO Clause isn't found");