mirror of
https://github.com/alibaba/druid.git
synced 2023-03-04 19:17:16 +00:00
improve sqlparser
This commit is contained in:
+10
@@ -26,6 +26,7 @@ import com.alibaba.druid.sql.dialect.sqlserver.visitor.SQLServerASTVisitor;
|
||||
|
||||
public class SQLServerExecStatement extends SQLServerObjectImpl implements SQLServerStatement {
|
||||
|
||||
private SQLName returnStatus;
|
||||
private SQLName moduleName;
|
||||
private List<SQLExpr> parameters = new ArrayList<SQLExpr>();
|
||||
|
||||
@@ -43,9 +44,18 @@ public class SQLServerExecStatement extends SQLServerObjectImpl implements SQLSe
|
||||
|
||||
public void accept0(SQLServerASTVisitor visitor) {
|
||||
if (visitor.visit(this)) {
|
||||
acceptChild(visitor, this.returnStatus);
|
||||
acceptChild(visitor, this.moduleName);
|
||||
acceptChild(visitor, this.parameters);
|
||||
}
|
||||
visitor.endVisit(this);
|
||||
}
|
||||
|
||||
public SQLName getReturnStatus() {
|
||||
return returnStatus;
|
||||
}
|
||||
|
||||
public void setReturnStatus(SQLName returnStatus) {
|
||||
this.returnStatus = returnStatus;
|
||||
}
|
||||
}
|
||||
|
||||
+10
-3
@@ -76,9 +76,16 @@ public class SQLServerStatementParser extends SQLStatementParser {
|
||||
this.exprParser.exprList(execStmt.getParameters(), execStmt);
|
||||
accept(Token.RPAREN);
|
||||
} else {
|
||||
SQLName moduleName = this.exprParser.name();
|
||||
execStmt.setModuleName(moduleName);
|
||||
|
||||
SQLName sqlNameName = this.exprParser.name();
|
||||
|
||||
if (lexer.token() == Token.EQ) {
|
||||
lexer.nextToken();
|
||||
execStmt.setReturnStatus(sqlNameName);
|
||||
execStmt.setModuleName(this.exprParser.name());
|
||||
} else {
|
||||
execStmt.setModuleName(sqlNameName);
|
||||
}
|
||||
|
||||
this.exprParser.exprList(execStmt.getParameters(), execStmt);
|
||||
}
|
||||
statementList.add(execStmt);
|
||||
|
||||
+7
@@ -331,6 +331,13 @@ public class SQLServerOutputVisitor extends SQLASTOutputVisitor implements SQLSe
|
||||
@Override
|
||||
public boolean visit(SQLServerExecStatement x) {
|
||||
print("EXEC ");
|
||||
|
||||
SQLName returnStatus = x.getReturnStatus();
|
||||
if (returnStatus != null) {
|
||||
returnStatus.accept(this);
|
||||
print(" = ");
|
||||
}
|
||||
|
||||
SQLName moduleName = x.getModuleName();
|
||||
if (moduleName != null) {
|
||||
moduleName.accept(this);
|
||||
|
||||
-1
@@ -21,7 +21,6 @@ import com.alibaba.druid.sql.ast.SQLExpr;
|
||||
import com.alibaba.druid.sql.ast.statement.SQLColumnDefinition;
|
||||
import com.alibaba.druid.sql.ast.statement.SQLInsertStatement;
|
||||
import com.alibaba.druid.sql.ast.statement.SQLSelectQueryBlock;
|
||||
import com.alibaba.druid.sql.dialect.oracle.ast.clause.OracleParameter;
|
||||
import com.alibaba.druid.sql.dialect.sqlserver.ast.SQLServerColumnDefinition;
|
||||
import com.alibaba.druid.sql.dialect.sqlserver.ast.SQLServerColumnDefinition.Identity;
|
||||
import com.alibaba.druid.sql.dialect.sqlserver.ast.SQLServerDeclareItem;
|
||||
|
||||
Reference in New Issue
Block a user