mirror of
https://github.com/alibaba/druid.git
synced 2023-03-04 19:17:16 +00:00
修复存储过程语句句尾需要分号
This commit is contained in:
+4
-4
@@ -8,11 +8,11 @@ import com.alibaba.druid.sql.ast.SQLStatement;
|
||||
import com.alibaba.druid.sql.dialect.mysql.ast.MySqlObjectImpl;
|
||||
import com.alibaba.druid.sql.dialect.mysql.ast.statement.MySqlStatementImpl;
|
||||
import com.alibaba.druid.sql.dialect.mysql.visitor.MySqlASTVisitor;
|
||||
|
||||
/**
|
||||
* MySql procedure case statement
|
||||
* @author zz
|
||||
*
|
||||
*
|
||||
* @Description: MySql procedure Case statement
|
||||
* @author zz email:455910092@qq.com
|
||||
* @version V1.0
|
||||
*/
|
||||
public class MySqlCaseStatement extends MySqlStatementImpl{
|
||||
|
||||
|
||||
+4
-3
@@ -9,9 +9,10 @@ import com.alibaba.druid.sql.dialect.mysql.ast.statement.MySqlStatementImpl;
|
||||
import com.alibaba.druid.sql.dialect.mysql.visitor.MySqlASTVisitor;
|
||||
|
||||
/**
|
||||
* MySql create procedure statement
|
||||
* @author zz
|
||||
*
|
||||
*
|
||||
* @Description: MySql create procedure statement
|
||||
* @author zz email:455910092@qq.com
|
||||
* @version V1.0
|
||||
*/
|
||||
public class MySqlCreateProcedureStatement extends MySqlStatementImpl {
|
||||
private boolean orReplace;
|
||||
|
||||
+5
-4
@@ -5,13 +5,14 @@ import java.util.List;
|
||||
|
||||
import com.alibaba.druid.sql.ast.SQLDataType;
|
||||
import com.alibaba.druid.sql.ast.SQLExpr;
|
||||
import com.alibaba.druid.sql.dialect.mysql.ast.MySqlObjectImpl;
|
||||
import com.alibaba.druid.sql.dialect.mysql.ast.statement.MySqlStatementImpl;
|
||||
import com.alibaba.druid.sql.dialect.mysql.visitor.MySqlASTVisitor;
|
||||
/**
|
||||
* MySql declare statement
|
||||
* @author sei.zz
|
||||
*
|
||||
*
|
||||
* @Description: MySql declare statement
|
||||
* @author zz email:455910092@qq.com
|
||||
* @date 2015-9-14
|
||||
* @version V1.0
|
||||
*/
|
||||
public class MySqlDeclareStatement extends MySqlStatementImpl{
|
||||
|
||||
|
||||
+5
-3
@@ -8,9 +8,11 @@ import com.alibaba.druid.sql.dialect.mysql.ast.MySqlObjectImpl;
|
||||
import com.alibaba.druid.sql.dialect.mysql.visitor.MySqlASTVisitor;
|
||||
|
||||
/**
|
||||
* MySql procedure else statement
|
||||
* @author zz
|
||||
*
|
||||
*
|
||||
* @Description: MySql procedure else statement
|
||||
* @author zz email:455910092@qq.com
|
||||
* @date 2015-9-14
|
||||
* @version V1.0
|
||||
*/
|
||||
public class MySqlElseStatement extends MySqlObjectImpl {
|
||||
|
||||
|
||||
@@ -10,9 +10,11 @@ import com.alibaba.druid.sql.dialect.mysql.ast.statement.MySqlStatementImpl;
|
||||
import com.alibaba.druid.sql.dialect.mysql.visitor.MySqlASTVisitor;
|
||||
|
||||
/**
|
||||
* MySql procedure if statement
|
||||
* @author sei.zz
|
||||
*
|
||||
*
|
||||
* @Description: MySql procedure if statement
|
||||
* @author zz email:455910092@qq.com
|
||||
* @date 2015-9-14
|
||||
* @version V1.0
|
||||
*/
|
||||
public class MySqlIfStatement extends MySqlStatementImpl{
|
||||
private SQLExpr condition;
|
||||
@@ -55,9 +57,11 @@ public class MySqlIfStatement extends MySqlStatementImpl{
|
||||
this.elseItem = elseItem;
|
||||
}
|
||||
/**
|
||||
* comment: else if语句
|
||||
* @author sei.zz
|
||||
*
|
||||
*
|
||||
* @Description: MySql procedure else if statement
|
||||
* @author zz email:455910092@qq.com
|
||||
* @date 2015-9-14
|
||||
* @version V1.0
|
||||
*/
|
||||
public static class MySqlElseIfStatement extends MySqlObjectImpl {
|
||||
|
||||
|
||||
@@ -21,9 +21,11 @@ import com.alibaba.druid.sql.dialect.mysql.ast.MySqlObjectImpl;
|
||||
import com.alibaba.druid.sql.dialect.mysql.visitor.MySqlASTVisitor;
|
||||
|
||||
/**
|
||||
* MySql procedure parameter
|
||||
* @author sei.zz
|
||||
*
|
||||
*
|
||||
* @Description: MySql procedure parameter
|
||||
* @author zz email:455910092@qq.com
|
||||
* @date 2015-9-14
|
||||
* @version V1.0
|
||||
*/
|
||||
public class MySqlParameter extends MySqlObjectImpl {
|
||||
|
||||
|
||||
+5
-4
@@ -4,14 +4,15 @@ import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import com.alibaba.druid.sql.ast.statement.SQLSelect;
|
||||
import com.alibaba.druid.sql.dialect.mysql.ast.MySqlObjectImpl;
|
||||
import com.alibaba.druid.sql.dialect.mysql.ast.statement.MySqlStatementImpl;
|
||||
import com.alibaba.druid.sql.dialect.mysql.visitor.MySqlASTVisitor;
|
||||
import com.alibaba.druid.sql.ast.SQLExpr;
|
||||
/**
|
||||
* MySql procedure select into statement
|
||||
* @author sei.zz
|
||||
*
|
||||
*
|
||||
* @Description: MySql procedure select into statement
|
||||
* @author zz email:455910092@qq.com
|
||||
* @date 2015-9-14
|
||||
* @version V1.0
|
||||
*/
|
||||
public class MySqlSelectIntoStatement extends MySqlStatementImpl{
|
||||
|
||||
|
||||
+5
-3
@@ -8,9 +8,11 @@ import com.alibaba.druid.sql.dialect.mysql.ast.statement.MySqlInsertStatement;
|
||||
import com.alibaba.druid.sql.dialect.mysql.ast.statement.MySqlUpdateStatement;
|
||||
|
||||
/**
|
||||
* MySql procedure statement type
|
||||
* @author zz
|
||||
*
|
||||
*
|
||||
* @Description: MySql procedure statement type
|
||||
* @author zz email:455910092@qq.com
|
||||
* @date 2015-9-14
|
||||
* @version V1.0
|
||||
*/
|
||||
public enum MySqlStatementType {
|
||||
//select statement
|
||||
|
||||
+6
-4
@@ -9,13 +9,15 @@ import com.alibaba.druid.sql.dialect.mysql.ast.statement.MySqlStatementImpl;
|
||||
import com.alibaba.druid.sql.dialect.mysql.visitor.MySqlASTVisitor;
|
||||
|
||||
/**
|
||||
* comment: 存储过程中while循环语句
|
||||
* @author 小竹zz
|
||||
*
|
||||
*
|
||||
* @Description: MySql procedure while statement
|
||||
* @author zz email:455910092@qq.com
|
||||
* @date 2015-9-14
|
||||
* @version V1.0
|
||||
*/
|
||||
public class MySqlWhileStatement extends MySqlStatementImpl {
|
||||
|
||||
//while循环的表达式
|
||||
//while expr
|
||||
private SQLExpr condition;
|
||||
private List<SQLStatement> statements = new ArrayList<SQLStatement>();
|
||||
|
||||
|
||||
+5
-3
@@ -5,9 +5,11 @@ import java.util.List;
|
||||
import com.alibaba.druid.sql.ast.SQLStatement;
|
||||
|
||||
/**
|
||||
* comment: mysql存储过程执行器
|
||||
* @author sei.zz
|
||||
*
|
||||
*
|
||||
* @Description: MySql procedure executor
|
||||
* @author zz email:455910092@qq.com
|
||||
* @date 2015-9-14
|
||||
* @version V1.0
|
||||
*/
|
||||
public class MySqlProcedureExecutor {
|
||||
|
||||
|
||||
@@ -46,9 +46,11 @@ import com.alibaba.druid.sql.parser.SQLSelectParser;
|
||||
import com.alibaba.druid.sql.parser.Token;
|
||||
|
||||
/**
|
||||
* parse select into statement
|
||||
* @author sei.zz
|
||||
*
|
||||
*
|
||||
* @Description: parse select into statement
|
||||
* @author zz email:455910092@qq.com
|
||||
* @date 2015-9-14
|
||||
* @version V1.0
|
||||
*/
|
||||
public class MySqlSelectIntoParser extends SQLSelectParser {
|
||||
private List<SQLExpr> argsList;
|
||||
@@ -187,7 +189,10 @@ public class MySqlSelectIntoParser extends SQLSelectParser {
|
||||
|
||||
return queryRest(queryBlock);
|
||||
}
|
||||
|
||||
/**
|
||||
* parser the select into arguments
|
||||
* @return
|
||||
*/
|
||||
protected List<SQLExpr> parseIntoArgs() {
|
||||
|
||||
List<SQLExpr> args=new ArrayList<SQLExpr>();
|
||||
|
||||
@@ -714,8 +714,6 @@ public class MySqlStatementParser extends SQLStatementParser {
|
||||
MySqlBlockStatement block = new MySqlBlockStatement();
|
||||
|
||||
accept(Token.BEGIN);
|
||||
|
||||
//parseStatementList(block.getStatementList());
|
||||
parseProcedureStatementList(block.getStatementList());
|
||||
accept(Token.END);
|
||||
|
||||
@@ -2806,7 +2804,7 @@ public class MySqlStatementParser extends SQLStatementParser {
|
||||
}
|
||||
|
||||
/**
|
||||
* parse procedure statement block
|
||||
* parse procedure statement block,not support begin-end block
|
||||
* @param statementList
|
||||
*/
|
||||
private void parseProcedureStatementList(List<SQLStatement> statementList)
|
||||
@@ -2948,8 +2946,8 @@ public class MySqlStatementParser extends SQLStatementParser {
|
||||
if (lexer.token() == Token.DECLARE) {
|
||||
statementList.add(this.parseDeclare());
|
||||
continue;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
throw new ParserException("TODO : " + lexer.token() + " "
|
||||
+ lexer.stringVal());
|
||||
}
|
||||
@@ -2995,6 +2993,7 @@ public class MySqlStatementParser extends SQLStatementParser {
|
||||
|
||||
accept(Token.END);
|
||||
accept(Token.IF);
|
||||
accept(Token.SEMI);
|
||||
|
||||
return stmt;
|
||||
}
|
||||
@@ -3016,6 +3015,8 @@ public class MySqlStatementParser extends SQLStatementParser {
|
||||
accept(Token.END);
|
||||
|
||||
accept(Token.WHILE);
|
||||
|
||||
accept(Token.SEMI);
|
||||
|
||||
return stmt;
|
||||
|
||||
@@ -3082,7 +3083,7 @@ public class MySqlStatementParser extends SQLStatementParser {
|
||||
}
|
||||
accept(Token.END);
|
||||
accept(Token.CASE);
|
||||
|
||||
accept(Token.SEMI);
|
||||
return stmt;
|
||||
|
||||
}
|
||||
|
||||
@@ -3212,12 +3212,10 @@ public class MySqlOutputVisitor extends SQLASTOutputVisitor implements MySqlASTV
|
||||
|
||||
|
||||
/**
|
||||
* comment: visit procedure node
|
||||
* author ��zz
|
||||
* visit procedure create node
|
||||
*/
|
||||
@Override
|
||||
public boolean visit(MySqlCreateProcedureStatement x) {
|
||||
// TODO Auto-generated method stub
|
||||
if (x.isOrReplace()) {
|
||||
print("CREATE OR REPLACE PROCEDURE ");
|
||||
} else {
|
||||
@@ -3254,13 +3252,11 @@ public class MySqlOutputVisitor extends SQLASTOutputVisitor implements MySqlASTV
|
||||
|
||||
@Override
|
||||
public void endVisit(MySqlCreateProcedureStatement x) {
|
||||
// TODO Auto-generated method stub
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean visit(MySqlParameter x) {
|
||||
// TODO Auto-generated method stub
|
||||
if (x.getDataType().getName().equalsIgnoreCase("CURSOR")) {
|
||||
print("CURSOR ");
|
||||
x.getName().accept(this);
|
||||
@@ -3288,14 +3284,11 @@ public class MySqlOutputVisitor extends SQLASTOutputVisitor implements MySqlASTV
|
||||
|
||||
@Override
|
||||
public void endVisit(MySqlParameter x) {
|
||||
// TODO Auto-generated method stub
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean visit(MySqlWhileStatement x) {
|
||||
// TODO Auto-generated method stub
|
||||
|
||||
print("WHILE ");
|
||||
x.getCondition().accept(this);
|
||||
print(" DO");
|
||||
@@ -3315,13 +3308,11 @@ public class MySqlOutputVisitor extends SQLASTOutputVisitor implements MySqlASTV
|
||||
|
||||
@Override
|
||||
public void endVisit(MySqlWhileStatement x) {
|
||||
// TODO Auto-generated method stub
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean visit(MySqlIfStatement x) {
|
||||
// TODO Auto-generated method stub
|
||||
print("IF ");
|
||||
x.getCondition().accept(this);
|
||||
print(" THEN");
|
||||
@@ -3348,14 +3339,11 @@ public class MySqlOutputVisitor extends SQLASTOutputVisitor implements MySqlASTV
|
||||
|
||||
@Override
|
||||
public void endVisit(MySqlIfStatement x) {
|
||||
// TODO Auto-generated method stub
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean visit(MySqlElseIfStatement x) {
|
||||
// TODO Auto-generated method stub
|
||||
|
||||
print("ELSE IF ");
|
||||
x.getCondition().accept(this);
|
||||
print(" THEN");
|
||||
@@ -3374,13 +3362,11 @@ public class MySqlOutputVisitor extends SQLASTOutputVisitor implements MySqlASTV
|
||||
|
||||
@Override
|
||||
public void endVisit(MySqlElseIfStatement x) {
|
||||
// TODO Auto-generated method stub
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean visit(MySqlElseStatement x) {
|
||||
// TODO Auto-generated method stub
|
||||
print("ELSE ");
|
||||
println();
|
||||
for (int i = 0, size = x.getStatements().size(); i < size; ++i) {
|
||||
@@ -3397,22 +3383,17 @@ public class MySqlOutputVisitor extends SQLASTOutputVisitor implements MySqlASTV
|
||||
|
||||
@Override
|
||||
public void endVisit(MySqlElseStatement x) {
|
||||
// TODO Auto-generated method stub
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean visit(MySqlCaseStatement x) {
|
||||
// TODO Auto-generated method stub
|
||||
|
||||
print("CASE ");
|
||||
x.getCondition().accept(this);
|
||||
println();
|
||||
for (int i = 0; i < x.getWhenList().size(); i++) {
|
||||
x.getWhenList().get(i).accept(this);
|
||||
// if (i != x.getWhenList().size() - 1) {
|
||||
// println();
|
||||
// }
|
||||
}
|
||||
if(x.getElseItem()!=null)
|
||||
x.getElseItem().accept(this);
|
||||
@@ -3422,16 +3403,12 @@ public class MySqlOutputVisitor extends SQLASTOutputVisitor implements MySqlASTV
|
||||
|
||||
@Override
|
||||
public void endVisit(MySqlCaseStatement x) {
|
||||
// TODO Auto-generated method stub
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean visit(MySqlDeclareStatement x) {
|
||||
// TODO Auto-generated method stub
|
||||
|
||||
print("DECLARE ");
|
||||
|
||||
for (int i = 0; i < x.getVarList().size(); i++) {
|
||||
x.getVarList().get(i).accept(this);
|
||||
if(i!=x.getVarList().size()-1)
|
||||
@@ -3439,39 +3416,33 @@ public class MySqlOutputVisitor extends SQLASTOutputVisitor implements MySqlASTV
|
||||
}
|
||||
print(" ");
|
||||
x.getType().accept(this);
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void endVisit(MySqlDeclareStatement x) {
|
||||
// TODO Auto-generated method stub
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean visit(MySqlSelectIntoStatement x) {
|
||||
// TODO Auto-generated method stub
|
||||
x.getSelect().accept(this);
|
||||
print(" INTO ");
|
||||
for (int i = 0; i < x.getVarList().size(); i++) {
|
||||
x.getVarList().get(i).accept(this);
|
||||
if(i!=x.getVarList().size()-1)
|
||||
print(",");
|
||||
//println(x.getVarList().get(i).toString());
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void endVisit(MySqlSelectIntoStatement x) {
|
||||
// TODO Auto-generated method stub
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean visit(MySqlWhenfStatement x) {
|
||||
// TODO Auto-generated method stub
|
||||
print("WHEN ");
|
||||
x.getCondition().accept(this);
|
||||
println(" THEN");
|
||||
@@ -3487,7 +3458,6 @@ public class MySqlOutputVisitor extends SQLASTOutputVisitor implements MySqlASTV
|
||||
|
||||
@Override
|
||||
public void endVisit(MySqlWhenfStatement x) {
|
||||
// TODO Auto-generated method stub
|
||||
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user