From 2a2867b96bc8242074795e7b3432a883c0da99fe Mon Sep 17 00:00:00 2001 From: fanglei <793514387@qq.com> Date: Tue, 3 Nov 2020 12:41:46 +0800 Subject: [PATCH] =?UTF-8?q?bug:=20oracle=E5=87=BD=E6=95=B0=20=E8=A7=A3?= =?UTF-8?q?=E6=9E=90TABLE=20OF=20varchar2(4000)=20=E5=87=BA=E9=94=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../sql/dialect/oracle/parser/OracleStatementParser.java | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/main/java/com/alibaba/druid/sql/dialect/oracle/parser/OracleStatementParser.java b/src/main/java/com/alibaba/druid/sql/dialect/oracle/parser/OracleStatementParser.java index 44e70205d8..5d7a583021 100644 --- a/src/main/java/com/alibaba/druid/sql/dialect/oracle/parser/OracleStatementParser.java +++ b/src/main/java/com/alibaba/druid/sql/dialect/oracle/parser/OracleStatementParser.java @@ -1927,6 +1927,11 @@ public class OracleStatementParser extends SQLStatementParser { if (lexer.identifierEquals(FnvHash.Constants.ROWTYPE)) { lexer.nextToken(); typeName = "TABLE OF " + name.toString() + "%ROWTYPE"; + } else if (lexer.token() == Token.LPAREN && lexer.stringVal().equalsIgnoreCase("Varchar2")) { + accept(Token.LPAREN); + int len = this.exprParser.acceptInteger(); + accept(Token.RPAREN); + typeName = "TABLE OF " + name.toString() + "(" + len + ")"; } else { acceptIdentifier("TYPE"); typeName = "TABLE OF " + name.toString() + "%TYPE";