From 498c2a4b114fa0ea9d09f32c73781dc900ab956d Mon Sep 17 00:00:00 2001 From: lukaseder Date: Tue, 5 Feb 2019 12:19:53 +0100 Subject: [PATCH] [#8290] Add Parser.parseStatement() to parse procedural code --- jOOQ/src/main/java/org/jooq/Parser.java | 21 +++++++++++++++++++ .../main/java/org/jooq/impl/ParserImpl.java | 14 +++++++++++++ 2 files changed, 35 insertions(+) diff --git a/jOOQ/src/main/java/org/jooq/Parser.java b/jOOQ/src/main/java/org/jooq/Parser.java index 6e279f2b39..efe75cc113 100644 --- a/jOOQ/src/main/java/org/jooq/Parser.java +++ b/jOOQ/src/main/java/org/jooq/Parser.java @@ -91,6 +91,27 @@ public interface Parser { @PlainSQL Query parseQuery(String sql, Object... bindings) throws ParserException; + /** + * Parse a SQL string to a procedural statement. + * + * @param sql The SQL string + * @throws ParserException If the SQL string could not be parsed. + */ + @Support + @PlainSQL + Statement parseStatement(String sql) throws ParserException; + + /** + * Parse a SQL string with bind variables to a procedural statement. + * + * @param sql The SQL string + * @param bindings The bind variables + * @throws ParserException If the SQL string could not be parsed. + */ + @Support + @PlainSQL + Statement parseStatement(String sql, Object... bindings) throws ParserException; + /** * Parse a SQL string to a result query. * diff --git a/jOOQ/src/main/java/org/jooq/impl/ParserImpl.java b/jOOQ/src/main/java/org/jooq/impl/ParserImpl.java index a44e2a71d2..28463380e5 100644 --- a/jOOQ/src/main/java/org/jooq/impl/ParserImpl.java +++ b/jOOQ/src/main/java/org/jooq/impl/ParserImpl.java @@ -532,6 +532,20 @@ final class ParserImpl implements Parser { return result; } + @Override + public final Statement parseStatement(String sql) { + return parseStatement(sql, new Object[0]); + } + + @Override + public final Statement parseStatement(String sql, Object... bindings) { + ParserContext ctx = ctx(sql, bindings); + Statement result = parseStatement(ctx); + parseSemicolonAfterNonBlocks(ctx, result); + ctx.done("Unexpected content"); + return result; + } + @Override public final ResultQuery parseResultQuery(String sql) { return parseResultQuery(sql, new Object[0]);