001package gudusoft.gsqlparser.nodes; 002 003 004import gudusoft.gsqlparser.EDbObjectType; 005import gudusoft.gsqlparser.TSourceTokenList; 006import gudusoft.gsqlparser.nodes.mssql.TProcedureOption; 007import gudusoft.gsqlparser.nodes.oracle.TInvokerRightsClause; 008import gudusoft.gsqlparser.TBaseType; 009import gudusoft.gsqlparser.nodes.oracle.TParallelEnableClause; 010 011/** 012 * Internal use in the parser. 013*/ 014 015public class TCreateProcedureSqlNode extends TParseTreeNode { 016 017 private TTypeName returnDataType = null; 018 019 public void setReturnDataType(TTypeName returnDataType) { 020 this.returnDataType = returnDataType; 021 } 022 023 public TTypeName getReturnDataType() { 024 025 return returnDataType; 026 } 027 028 private TDummy returnTable = null; 029 030 public void setReturnTable(TDummy returnTable) { 031 this.returnTable = returnTable; 032 } 033 034 public TDummy getReturnTable() { 035 return returnTable; 036 } 037 038 private TObjectName externalName = null; 039 040 /** 041 * SQL Server CLR routine body: the <code>assembly.class.method</code> name 042 * after <code>AS EXTERNAL NAME</code>. 043 */ 044 public void setExternalName(TObjectName externalName) { 045 this.externalName = externalName; 046 } 047 048 public TObjectName getExternalName() { 049 return externalName; 050 } 051 052 private TConstant functionBody = null; 053 054 public TSourceTokenList getFunctionBodyTokenList() { 055 return functionBodyTokenList; 056 } 057 058 private TSourceTokenList functionBodyTokenList = null; 059 060 public void setFunctionBody(TConstant functionBody) { 061 this.functionBody = functionBody; 062 } 063 public void setFunctionBody(TDummy functionBody) { 064 // used in netezza 065 if (functionBody.node1 != null){ 066 if (functionBody.node1 instanceof TConstant){ 067 this.functionBody = (TConstant)functionBody.node1; 068 } 069 }else if ((functionBody.st1 != null)&&(functionBody.st2 != null)){ 070 functionBodyTokenList = new TSourceTokenList(); 071 for(int i=functionBody.st1.posinlist; i< functionBody.st2.posinlist;i++){ 072 functionBodyTokenList.add(functionBody.st1.container.get(i)); 073 } 074 } 075 076 } 077 078 public TConstant getFunctionBody() { 079 return functionBody; 080 } 081 private TConstant procedureLanguage; 082 083 public void setProcedureLanguage(TConstant procedureLanguage) { 084 this.procedureLanguage = procedureLanguage; 085 } 086 087 public TConstant getProcedureLanguage() { 088 return procedureLanguage; 089 } 090 private TConstant objfile; 091 private TConstant linkSymbol; 092 093 public TConstant getLinkSymbol() { 094 return linkSymbol; 095 } 096 097 public TConstant getObjfile() { 098 return objfile; 099 } 100 101 public void setFunctionOption(TCreateFunctionOption option){ 102 switch (option.getOptionType()){ 103 case block: 104 functionBody = option.getFunctionBody(); 105 break; 106 case stmts: 107 //setStmts(option.getSqlNodes()); 108 functionBody = option.getFunctionBody(); 109 break; 110 case language: 111 procedureLanguage = option.getLanguage(); 112 break; 113 case objfile: 114 objfile = option.getObjfile(); 115 linkSymbol = option.getLinkSymbol(); 116 break; 117 default: 118 break; 119 } 120 } 121 122 public void setFunctionOptions(TPTNodeList<TCreateFunctionOption> options){ 123 if (options == null) return; 124 for(int i=0;i<options.size();i++){ 125 setFunctionOption(options.getElement(i)); 126 } 127 } 128 129 private TObjectName endlabelName; 130 131 public void setEndlabelName(TObjectName endlabelName) { 132 this.endlabelName = endlabelName; 133 } 134 135 public TObjectName getEndlabelName() { 136 137 return endlabelName; 138 } 139 140 private TPTNodeList <TProcedureOption> procedureOptions; 141 142 public void setProcedureOptions(TPTNodeList<TProcedureOption> procedureOptions) { 143 this.procedureOptions = procedureOptions; 144 } 145 146 public TPTNodeList<TProcedureOption> getProcedureOptions() { 147 148 return procedureOptions; 149 } 150 151 private boolean isForReplication; 152 153 public void setForReplication(boolean isForReplication) { 154 this.isForReplication = isForReplication; 155 } 156 157 public boolean isForReplication() { 158 159 return isForReplication; 160 } 161 162 private TObjectName labelName; 163 164 public void setLabelName(TObjectName labelName) { 165 this.labelName = labelName; 166 } 167 168 public TObjectName getLabelName() { 169 170 return labelName; 171 } 172 173 private TInvokerRightsClause invokerRightsClause; 174 175 public void setInvokerRightsClause(TInvokerRightsClause invokerRightsClause) { 176 this.invokerRightsClause = invokerRightsClause; 177 } 178 179 public TInvokerRightsClause getInvokerRightsClause() { 180 181 return invokerRightsClause; 182 } 183 184 private TParallelEnableClause parallelEnableClause; 185 public void setParallelEnableClause(TParallelEnableClause parallelEnableClause) { 186 this.parallelEnableClause = parallelEnableClause; 187 } 188 public TParallelEnableClause getParallelEnableClause() { 189 190 return parallelEnableClause; 191 } 192 193 private TDummy defaultCollation = null; 194 public TDummy getDefaultCollation() { 195 return defaultCollation; 196 } 197 198 public TDummy accessibleByClause = null; 199 public void setAccessibleByClause(TDummy accessibleByClause) { 200 this.accessibleByClause = accessibleByClause; 201 } 202 public TDummy getAccessibleByClause() { 203 return accessibleByClause; 204 } 205 206 public void setDefaultInvokerAccessByDummy(TDummy dummy){ 207 if (dummy == null) return; 208 switch (dummy.int1){ 209 case 1: // default_invoker_accessible_item_lists 210 for(int i=0;i<dummy.arrayList1.size();i++) { 211 TDummy dummyItem = (TDummy) dummy.arrayList1.get(0); 212 String itemName = dummyItem.toString().toLowerCase(); 213 if (itemName.startsWith("default")) { 214 defaultCollation = dummyItem; 215 } else if (itemName.startsWith("auth")) { 216 this.invokerRightsClause = (TInvokerRightsClause) dummyItem.node1; 217 } else if (itemName.startsWith("accessible")) { 218 this.accessibleByClause =dummyItem; 219 } 220 } 221 break; 222 case 2: // parallel_enable_clause 223 this.parallelEnableClause = (TParallelEnableClause)dummy.node1; 224 break; 225 case 3: // RW_PACKAGE 226 break; 227 } 228 } 229 230 private TCallSpec callSpec = null; 231 232 public void setCallSpec(TCallSpec callSpec) { 233 this.callSpec = callSpec; 234 } 235 236 public TCallSpec getCallSpec() { 237 238 return callSpec; 239 } 240 241 public TObjectName getProcedureName() { 242 return procedureName; 243 } 244 245 private TObjectName procedureName = null; 246 247 public TParameterDeclarationList getParameters() { 248 return parameters; 249 } 250 251 private TParameterDeclarationList parameters = null; 252 253 public void setParameters(TParameterDeclarationList parameters) { 254 this.parameters = parameters; 255 } 256 257 public void setParametersByDummy(TDummy node) { 258 if (node == null) return; 259 if (node.node1 != null){ 260 this.parameters = (TParameterDeclarationList)node.node1; 261 } 262 } 263 264 private TStatementListSqlNode innerStmts = null; //oracle plsql 265 266 public void setInnerStmts(TStatementListSqlNode innerStmts) { 267 this.innerStmts = innerStmts; 268 } 269 270 private TStatementSqlNode stmt = null;//mysql single stmt in function body 271 272 public void setStmt(TStatementSqlNode stmt) { 273 this.stmt = stmt; 274 } 275 276 public TStatementSqlNode getStmt() { 277 278 return stmt; 279 } 280 281 private TBlockSqlNode blcok = null; // MySQL 282 283 public void setBlcok(TBlockSqlNode blcok) { 284 this.blcok = blcok; 285 } 286 287 public TBlockSqlNode getBlcok() { 288 289 return blcok; 290 } 291 292 public void init(Object arg1) 293 { 294 procedureName = (TObjectName)arg1; 295 //procedureName.setObjectType(TObjectName.ttobjProcedureName); 296 procedureName.setDbObjectType(EDbObjectType.procedure); 297 procedureName.splitNameInQuotedIdentifier(); 298 } 299 300 public int getKind() { 301 return kind; 302 } 303 304 public void setKind(int kind) { 305 this.kind = kind; 306 307 } 308 309 private int kind = TBaseType.kind_create; 310 311 public TExceptionClause getExceptionClause() { 312 return exceptionClause; 313 } 314 315 public void setExceptionClause(TExceptionClause exceptionClause) { 316 this.exceptionClause = exceptionClause; 317 } 318 319 private TExceptionClause exceptionClause = null; //plsql exception 320 321 public TStatementListSqlNode getInnerStmts() { 322 return innerStmts; 323 } 324 325 public TStatementListSqlNode getStmts() { 326 return stmts; 327 } 328 329 private TStatementListSqlNode stmts = null; 330 331 public TStatementListSqlNode getDeclareStmts() { 332 return declareStmts; 333 } 334 335 public void setDeclareStmts(TStatementListSqlNode declareStmts) { 336 this.declareStmts = declareStmts; 337 338 } 339 340 private TStatementListSqlNode declareStmts = null; 341 342 public void setStmts(TStatementListSqlNode stmts) { 343 this.stmts = stmts; 344 } 345 346 private TCompoundSqlNode compoundSqls = null; 347 348 public void setCompoundSqls(TCompoundSqlNode compoundSqls) { 349 this.compoundSqls = compoundSqls; 350 } 351 352 public TCompoundSqlNode getCompoundSqls() { 353 354 return compoundSqls; 355 } 356}