001package gudusoft.gsqlparser.stmt; 002 003import gudusoft.gsqlparser.*; 004import gudusoft.gsqlparser.nodes.TObjectName; 005import gudusoft.gsqlparser.nodes.TExpression; 006import gudusoft.gsqlparser.nodes.TParseTreeVisitor; 007import gudusoft.gsqlparser.nodes.TSelectSqlNode; 008 009/** 010 * The OPEN-FOR statement executes the SELECT statement associated with a cursor variable. 011 */ 012 013public class TOpenforStmt extends TCustomSqlStatement { 014 015 public TOpenforStmt(){ 016 this(EDbVendor.dbvoracle); 017 } 018 019 public TOpenforStmt(EDbVendor dbvendor){ 020 super(dbvendor); 021 sqlstatementtype = ESqlStatementType.sst_openforstmt; 022 } 023 024 public TSelectSqlStatement getSubquery() { 025 return subquery; 026 } 027 028 private TSelectSqlStatement subquery = null; 029 private TSelectSqlNode selectSqlNode = null; 030 031 void buildsql() { 032 } 033 034 void clear() { 035 } 036 037 String getasprettytext() { 038 return ""; 039 } 040 041 void iterate(TVisitorAbs pvisitor) { 042 } 043 044 public void init(Object arg1,Object arg2) 045 { 046 this.cursorVariableName = (TObjectName)arg1; 047 048 if (arg2 instanceof TSelectSqlStatement){ 049 subquery = (TSelectSqlStatement)arg2; 050 }else if (arg2 instanceof TSelectSqlNode){ 051 selectSqlNode = (TSelectSqlNode)arg2; 052 }else{ 053 dynamic_string = (TExpression)arg2; 054 } 055 } 056 057 public int doParseStatement(TCustomSqlStatement psql) { 058 super.doParseStatement(psql); 059 060 if (subquery != null){ 061 subquery.parsestatement(this,false); 062 }else if (selectSqlNode != null){ 063 //postgresql 064 subquery = new TSelectSqlStatement(this.dbvendor); 065 subquery.rootNode = selectSqlNode; 066 subquery.doParseStatement(this); 067 } 068 069 return 0; 070 } 071 072 private TObjectName cursorVariableName = null; 073 074 /** 075 * 076 * @return A cursor variable or parameter (without a return type), previously declared within the current scope. 077 */ 078 public TObjectName getCursorVariableName() { 079 return cursorVariableName; 080 } 081 082 private TExpression dynamic_string = null; 083 084 /** 085 * 086 * @return A string literal, string variable, or string expression that represents any SQL statement. 087 */ 088 public TExpression getDynamic_string() { 089 return dynamic_string; 090 } 091 092 public void accept(TParseTreeVisitor v){ 093 v.preVisit(this); 094 v.postVisit(this); 095 } 096 097 public void acceptChildren(TParseTreeVisitor v){ 098 v.preVisit(this); 099 if (subquery != null) subquery.acceptChildren(v); 100 v.postVisit(this); 101 } 102 103 public void setSubquery(TSelectSqlStatement subquery) { 104 this.subquery = subquery; 105 } 106 107 public void setCursorVariableName(TObjectName cursorVariableName) { 108 this.cursorVariableName = cursorVariableName; 109 } 110 111 public void setDynamic_string(TExpression dynamic_string) { 112 this.dynamic_string = dynamic_string; 113 } 114}