001package gudusoft.gsqlparser.nodes; 002 003import gudusoft.gsqlparser.EDbObjectType; 004import gudusoft.gsqlparser.EExecType; 005import gudusoft.gsqlparser.EExpressionType; 006import gudusoft.gsqlparser.TBaseType; 007import gudusoft.gsqlparser.nodes.mssql.TExecuteOption; 008 009 010public class TExecuteSqlNode extends TParseTreeNode { 011 012 public void setLinkServerName(TObjectName linkServerName) { 013 this.linkServerName = linkServerName; 014 } 015 016 public TObjectName getLinkServerName() { 017 return linkServerName; 018 } 019 020 private TObjectName linkServerName; 021 private TObjectName moduleName = null; 022 private TObjectName returnStatus = null; 023 private TExecParameterList parameters = null; 024 private TExpressionList stringValues = null; 025 private int execType = TBaseType.metExecSp; 026 027 // postgresql 028 private TExpression stmtString; 029 030 031 public void setIntoVariable(TObjectName intoVariable) { 032 this.intoVariable = intoVariable; 033 } 034 035 public void setUsingVariables(TExpressionList usingVariables) { 036 this.usingVariables = usingVariables; 037 } 038 039 public void setStmtString(TExpression stmtString) { 040 this.stmtString = stmtString; 041 } 042 043 public TExpression getStmtString() { 044 return stmtString; 045 } 046 047 private TObjectName intoVariable; 048 private TExpressionList usingVariables; 049 050 public TObjectName getIntoVariable() { 051 return intoVariable; 052 } 053 054 public TExpressionList getUsingVariables() { 055 return usingVariables; 056 } 057 058 059 060 private TExecuteOption executeOption; 061 062 public void setExecuteOption(TExecuteOption executeOption) { 063 this.executeOption = executeOption; 064 } 065 066 public TExecuteOption getExecuteOption() { 067 068 return executeOption; 069 } 070 071 public void setExecType(int execType) { 072 this.execType = execType; 073 } 074 075 public int getExecType() { 076 077 return execType; 078 } 079 080 public TExpressionList getStringValues() { 081 return stringValues; 082 } 083 084 public TObjectName getModuleName() { 085 return moduleName; 086 } 087 088 public TExecParameterList getParameters() { 089 return parameters; 090 } 091 092 public TObjectName getReturnStatus() { 093 return returnStatus; 094 } 095 096// public void init(Object arg1,Object arg2,Object arg3){ 097// if (arg1 instanceof TObjectName){ 098// this.moduleName = (TObjectName)arg1; 099// this.moduleName.setObjectType(TObjectName.ttobjProcedureName); 100// if (arg2 != null){ 101// if (arg2 instanceof TExpressionList){ 102// // oracle execute 103// stringValues = (TExpressionList)arg2; 104// }else{ 105// this.parameters = (TExecParameterList)arg2; 106// } 107// } 108// 109// if (arg3 != null){ 110// this.returnStatus = (TObjectName)arg3; 111// } 112// }else if(arg1 instanceof TExpressionList){ 113// this.stringValues = (TExpressionList)arg1; 114// } 115// } 116 117 public EExecType getExecuteType() { 118 return executeType; 119 } 120 121 private EExecType executeType = EExecType.stmt; 122 123 public void init(Object arg1){ 124 executeType = (EExecType)arg1; 125 } 126 127 public void init(Object arg1,Object arg2){ 128 init(arg1); 129 switch (executeType){ 130 case stmt: 131 break; 132 case module: 133 moduleName = (TObjectName)arg2; 134 //this.moduleName.setObjectType(TObjectName.ttobjProcedureName); 135 this.moduleName.setDbObjectType(EDbObjectType.procedure); 136 break; 137 case expr: 138 preparedValue = (TExpression)arg2; 139 stmtString = (TExpression)arg2; 140 if (preparedValue.getExpressionType() == EExpressionType.function_t){ 141 // 142 TFunctionCall functionCall = preparedValue.getFunctionCall(); 143 this.moduleName = functionCall.getFunctionName(); 144 this.moduleName.setDbObjectTypeDirectly(EDbObjectType.procedure); 145 this.executeType = EExecType.module; 146 147 // EXECUTE module_abc(1,2,4); 148 if (parameters == null){ 149 parameters = new TExecParameterList(); 150 } 151 TExpressionList args = functionCall.getArgs(); 152 if (args != null){ 153 for(int i=0;i<args.size();i++){ 154 TExecParameter parameter = new TExecParameter(); 155 parameter.setParameterValue(args.getExpression(i)); 156 parameter.setStartToken(args.getExpression(i).getStartToken()); 157 parameter.setEndToken(args.getExpression(i).getEndToken()); 158 parameters.addExecParameter(parameter); 159 } 160 } 161 } 162 163 164 165 break; 166 case module_with_params: 167 moduleName = (TObjectName)arg2; 168 //this.moduleName.setObjectType(TObjectName.ttobjProcedureName); 169 this.moduleName.setDbObjectType(EDbObjectType.procedure); 170 break; 171 case exec_string_cmd: 172 stringValues = (TExpressionList)arg2; 173 default: 174 break; 175 } 176 } 177 178 179 public void init(Object arg1,Object arg2,Object arg3){ 180 init(arg1,arg2); 181 switch (executeType){ 182 case stmt: 183 break; 184 case module: 185 stringValues = (TExpressionList)arg3; 186 break; 187 case expr: 188 usingVariables = (TExpressionList)arg3; 189 break; 190 case module_with_params: 191 this.parameters = (TExecParameterList)arg3; 192 break; 193 case exec_string_cmd: 194 stringValues = (TExpressionList)arg3; 195 break; 196 default: 197 break; 198 } 199 } 200 201 public void init(Object arg1,Object arg2,Object arg3,Object arg4){ 202 init(arg1,arg2,arg3); 203 switch (executeType){ 204 case module_with_params: 205 this.returnStatus = (TObjectName) arg4; 206 break; 207 default: 208 break; 209 } 210 } 211 212// public void init(Object arg1){ 213// if (arg1 instanceof TObjectName){ 214// this.moduleName = (TObjectName)arg1; 215// this.moduleName.setObjectType(TObjectName.ttobjProcedureName); 216// }else if (arg1 instanceof TExpression){ 217// preparedValue = (TExpression)arg1; 218// stmtString = (TExpression)arg1; 219// } 220// } 221// 222// 223// 224// public void init(Object arg1,Object arg2){ 225// init(arg1); 226// if (arg2 instanceof TExecParameterList){ 227// parameters = (TExecParameterList)arg2; 228// }else if (arg2 instanceof TExpressionList){ 229// stringValues = (TExpressionList)arg2; 230// } 231// } 232 233 public TExpression getPreparedValue() { 234 return preparedValue; 235 } 236 237 private TExpression preparedValue;//couchbase 238}