public SQLParameter clone() { SQLParameter x = new SQLParameter(); if (name != null) { x.setName(name.clone()); } if (dataType != null) { x.setDataType(dataType.clone()); } if (defaultValue != null) { x.setDefaultValue(defaultValue.clone()); } x.paramType = paramType; x.noCopy = noCopy; x.constant = constant; x.order = order; x.map = map; if (cursorName != null) { x.setCursorName(cursorName.clone()); } for (SQLParameter p : cursorParameters) { SQLParameter p2 = p.clone(); p2.setParent(x); x.cursorParameters.add(p2); } return x; }
@Override public boolean visit(SQLBlockStatement x) { if (repository != null && x.getParent() == null) { repository.resolve(x); } for (SQLParameter param : x.getParameters()) { param.setParent(x); param.accept(this); } for (SQLStatement stmt : x.getStatementList()) { stmt.accept(this); } SQLStatement exception = x.getException(); if (exception != null) { exception.accept(this); } return false; }
@Override public void accept0(SQLASTVisitor visitor) { if (visitor.visit(this)) { acceptChild(visitor, name); acceptChild(visitor, dataType); acceptChild(visitor, defaultValue); } visitor.endVisit(this); }
private void parserParameters(List<SQLParameter> parameters) { for (;;) { SQLParameter parameter = new SQLParameter(); parameter.setName(this.exprParser.name()); parameter.setDataType(this.exprParser.parseDataType()); parameters.add(parameter); if (lexer.token() == Token.COMMA || lexer.token() == Token.SEMI) { lexer.nextToken(); } if (lexer.token() != Token.BEGIN && lexer.token() != Token.RPAREN) { continue; } break; } } }
private void parserParameters(List<SQLParameter> parameters, SQLObject parent) { for (;;) { SQLParameter parameter = new SQLParameter(); parameter.setParent(parent); parameter.setMap(true); } else if (lexer.token() == Token.ORDER) { lexer.nextToken(); parameter.setOrder(true); this.parserParameters(parameter.getCursorParameters(), parameter); accept(Token.RPAREN); parameter.setDefaultValue(new SQLQueryExpr(select)); parameter.setParamType(SQLParameter.ParameterType.INOUT); } else { parameter.setParamType(SQLParameter.ParameterType.IN); parameter.setParamType(SQLParameter.ParameterType.INOUT); } else { parameter.setParamType(SQLParameter.ParameterType.OUT); parameter.setParamType(SQLParameter.ParameterType.INOUT); parameter.setNoCopy(true); parameter.setConstant(true); && lexer.token() == Token.FUNCTION) {
@Override public boolean visit(SQLParameter x) { SQLName name = x.getName(); if (x.getDataType().getName().equalsIgnoreCase("CURSOR")) { print0(ucase ? "CURSOR " : "cursor "); x.getName().accept(this); print0(ucase ? " IS" : " is"); this.indentCount++; println(); SQLSelect select = ((SQLQueryExpr) x.getDefaultValue()).getSubQuery(); select.accept(this); this.indentCount--; if (x.isMap()) { print0(ucase ? "MAP MEMBER " : "map member "); } else if (x.isOrder()) { print0(ucase ? "ORDER MEMBER " : "order member "); } else if (x.isMember()) { print0(ucase ? "MEMBER " : "member "); SQLDataType dataType = x.getDataType(); boolean printType = (dataTypeName.startsWith("TABLE OF") && x.getDefaultValue() == null) || dataTypeName.equalsIgnoreCase("REF CURSOR") || dataTypeName.startsWith("VARRAY("); if (x.getParamType() == SQLParameter.ParameterType.IN) { print0(ucase ? " IN " : " in "); } else if (x.getParamType() == SQLParameter.ParameterType.OUT) { print0(ucase ? " OUT " : " out ");
SQLParameter parameter = new SQLParameter(); parameter.setName(this.exprParser.name()); parameter.setDataType(dataType); parameter.setDefaultValue(new SQLQueryExpr(select)); parameter.setParamType(ParameterType.IN); } else if (lexer.token() == Token.OUT) { parameter.setParamType(ParameterType.OUT); } else if (lexer.token() == Token.INOUT) { parameter.setParamType(ParameterType.INOUT); parameter.setName(this.exprParser.name()); parameter.setDataType(this.exprParser.parseDataType()); } else { parameter.setParamType(ParameterType.DEFAULT);// default parameter type is in parameter.setName(this.exprParser.name()); parameter.setDataType(this.exprParser.parseDataType()); parameter.setDefaultValue(this.exprParser.expr());
param.accept(this); SQLDataType dataType = param.getDataType();
param.accept(this); print(';');
static void resolve(SchemaResolveVisitor visitor, SQLParameter x) { SQLName name = x.getName(); if (name instanceof SQLIdentifierExpr) { ((SQLIdentifierExpr) name).setResolvedParameter(x); } SQLExpr expr = x.getDefaultValue(); SchemaResolveVisitor.Context ctx = null; if (expr != null) { if (expr instanceof SQLQueryExpr) { ctx = visitor.createContext(x); SQLSubqueryTableSource tableSource = new SQLSubqueryTableSource(((SQLQueryExpr) expr).getSubQuery()); tableSource.setParent(x); tableSource.setAlias(x.getName().getSimpleName()); ctx.setTableSource(tableSource); } expr.accept(visitor); } if (ctx != null) { visitor.popContext(); } }
public SQLParameter findParameter(long hash) { for (SQLParameter param : this.parameters) { if (param.getName().nameHashCode64() == hash) { return param; } } return null; }
protected void printParamDefaultValue(SQLParameter x) { if (x.getDefaultValue() != null) { print0(" := "); x.getDefaultValue().accept(this); } }
private void parserParameters(List<SQLParameter> parameters, SQLObject parent) { for (;;) { SQLParameter parameter = new SQLParameter(); parameter.setParent(parent); parameter.setMap(true); } else if (lexer.token() == Token.ORDER) { lexer.nextToken(); parameter.setOrder(true); this.parserParameters(parameter.getCursorParameters(), parameter); accept(Token.RPAREN); parameter.setDefaultValue(new SQLQueryExpr(select)); parameter.setParamType(SQLParameter.ParameterType.INOUT); } else { parameter.setParamType(SQLParameter.ParameterType.IN); parameter.setParamType(SQLParameter.ParameterType.INOUT); } else { parameter.setParamType(SQLParameter.ParameterType.OUT); parameter.setParamType(SQLParameter.ParameterType.INOUT); parameter.setNoCopy(true); parameter.setConstant(true); && lexer.token() == Token.FUNCTION) {
@Override public boolean visit(SQLParameter x) { SQLName name = x.getName(); if (x.getDataType().getName().equalsIgnoreCase("CURSOR")) { print0(ucase ? "CURSOR " : "cursor "); x.getName().accept(this); print0(ucase ? " IS" : " is"); this.indentCount++; println(); SQLSelect select = ((SQLQueryExpr) x.getDefaultValue()).getSubQuery(); select.accept(this); this.indentCount--; if (x.isMap()) { print0(ucase ? "MAP MEMBER " : "map member "); } else if (x.isOrder()) { print0(ucase ? "ORDER MEMBER " : "order member "); } else if (x.isMember()) { print0(ucase ? "MEMBER " : "member "); SQLDataType dataType = x.getDataType(); boolean printType = (dataTypeName.startsWith("TABLE OF") && x.getDefaultValue() == null) || dataTypeName.equalsIgnoreCase("REF CURSOR") || dataTypeName.startsWith("VARRAY("); if (x.getParamType() == SQLParameter.ParameterType.IN) { print0(ucase ? " IN " : " in "); } else if (x.getParamType() == SQLParameter.ParameterType.OUT) { print0(ucase ? " OUT " : " out ");
SQLParameter parameter = new SQLParameter(); parameter.setName(this.exprParser.name()); parameter.setDataType(dataType); parameter.setDefaultValue(new SQLQueryExpr(select)); parameter.setParamType(ParameterType.IN); } else if (lexer.token() == Token.OUT) { parameter.setParamType(ParameterType.OUT); } else if (lexer.token() == Token.INOUT) { parameter.setParamType(ParameterType.INOUT); parameter.setName(this.exprParser.name()); parameter.setDataType(this.exprParser.parseDataType()); } else { parameter.setParamType(ParameterType.DEFAULT);// default parameter type is in parameter.setName(this.exprParser.name()); parameter.setDataType(this.exprParser.parseDataType()); parameter.setDefaultValue(this.exprParser.expr());
public OracleFunctionDataType clone() { OracleFunctionDataType x = new OracleFunctionDataType(); cloneTo(x); x.isStatic = isStatic; if (returnDataType != null) { x.setReturnDataType(returnDataType.clone()); } for (SQLParameter parameter : parameters) { SQLParameter p2 = parameter.clone(); p2.setParent(x); x.parameters.add(p2); } return x; }
private void parserParameters(List<SQLParameter> parameters) { for (;;) { SQLParameter parameter = new SQLParameter(); parameter.setName(this.exprParser.name()); parameter.setDataType(this.exprParser.parseDataType()); parameters.add(parameter); if (lexer.token() == Token.COMMA || lexer.token() == Token.SEMI) { lexer.nextToken(); } if (lexer.token() != Token.BEGIN && lexer.token() != Token.RPAREN) { continue; } break; } } }
param.accept(this); SQLDataType dataType = param.getDataType();
static void resolve(SchemaResolveVisitor visitor, SQLCreateProcedureStatement x) { SchemaResolveVisitor.Context ctx = visitor.createContext(x); { SQLDeclareItem declareItem = new SQLDeclareItem(x.getName().clone(), null); declareItem.setResolvedObject(x); SchemaResolveVisitor.Context parentCtx = visitor.getContext(); if (parentCtx != null) { parentCtx.declare(declareItem); } else { ctx.declare(declareItem); } } for (SQLParameter parameter : x.getParameters()) { parameter.accept(visitor); } SQLStatement block = x.getBlock(); if (block != null) { block.accept(visitor); } visitor.popContext(); }