improved oracle pl/sql parser.

This commit is contained in:
wenshao
2017-05-12 10:46:30 +08:00
parent 44ec0112c1
commit 7cd62c0eb7
5 changed files with 212 additions and 4 deletions
@@ -26,6 +26,7 @@ import com.alibaba.druid.sql.ast.SQLObject;
import com.alibaba.druid.sql.ast.SQLStatement;
import com.alibaba.druid.sql.ast.expr.SQLCharExpr;
import com.alibaba.druid.sql.ast.expr.SQLIdentifierExpr;
import com.alibaba.druid.sql.ast.expr.SQLQueryExpr;
import com.alibaba.druid.sql.ast.expr.SQLVariantRefExpr;
import com.alibaba.druid.sql.ast.statement.*;
import com.alibaba.druid.sql.ast.statement.SQLCreateTriggerStatement.TriggerEvent;
@@ -2189,6 +2190,18 @@ public class SQLStatementParser extends SQLParser {
SQLOpenStatement stmt = new SQLOpenStatement();
accept(Token.OPEN);
stmt.setCursorName(exprParser.name().getSimpleName());
if (lexer.token() == Token.FOR) {
lexer.nextToken();
if (lexer.token() == Token.SELECT) {
SQLSelectParser selectParser = createSQLSelectParser();
SQLSelect select = selectParser.select();
SQLQueryExpr queryExpr = new SQLQueryExpr(select);
stmt.setFor(queryExpr);
} else {
throw new ParserException("TODO " + lexer.info());
}
}
accept(Token.SEMI);
return stmt;
}