001package gudusoft.gsqlparser.nodes;
002
003import gudusoft.gsqlparser.ESqlClause;
004import gudusoft.gsqlparser.TBaseType;
005import gudusoft.gsqlparser.TCustomSqlStatement;
006import gudusoft.gsqlparser.TSourceToken;
007
008/**
009 * Parameter of execute statement in SQL Server,teradata
010*/
011public class TExecParameter extends TParseTreeNode {
012    private TObjectName parameterName = null;
013    private TExpression parameterValue = null;
014    private int parameterMode = TBaseType.parameter_mode_default;
015
016    /**
017     * this parameter can be out or output mode.
018     * @return
019     */
020    public int getParameterMode() {
021        return parameterMode;
022    }
023
024    public TObjectName getParameterName() {
025        return parameterName;
026    }
027
028    public TExpression getParameterValue() {
029        return parameterValue;
030    }
031
032    public void init(Object arg1) {
033        this.parameterValue = (TExpression) arg1;
034    }
035
036    public void init(Object arg1,Object arg2) {
037        init(arg1);
038        if (arg2 != null){
039            this.parameterName = (TObjectName) arg2;
040        }
041
042    }
043
044    public void init(Object arg1,Object arg2,Object arg3){
045        init(arg1,arg2);
046        if (arg3 != null){
047            TSourceToken st = (TSourceToken)arg3;
048            if(st.toString().equalsIgnoreCase("out")){
049                this.parameterMode = TBaseType.parameter_mode_out;
050            }else if (st.toString().equalsIgnoreCase("output")){
051                this.parameterMode = TBaseType.parameter_mode_output;
052            }
053        }
054
055    }
056
057    public void doParse(TCustomSqlStatement psql, ESqlClause plocation){
058        parameterValue.doParse(psql,plocation);
059
060    }
061
062    public void accept(TParseTreeVisitor v){
063        v.preVisit(this);
064        v.postVisit(this);
065    }
066    public void acceptChildren(TParseTreeVisitor v){
067        v.preVisit(this);
068        v.postVisit(this);
069    }
070
071    public void setParameterName(TObjectName parameterName) {
072        this.parameterName = parameterName;
073    }
074
075    public void setParameterValue(TExpression parameterValue) {
076        this.parameterValue = parameterValue;
077    }
078
079    public void setParameterMode(int parameterMode) {
080        this.parameterMode = parameterMode;
081    }
082}