001 002package gudusoft.gsqlparser.dlineage.dataflow.model; 003 004import gudusoft.gsqlparser.nodes.TResultColumnList; 005import gudusoft.gsqlparser.stmt.TCursorDeclStmt; 006import gudusoft.gsqlparser.stmt.TForStmt; 007import gudusoft.gsqlparser.stmt.TLoopStmt; 008import gudusoft.gsqlparser.stmt.TOpenforStmt; 009import gudusoft.gsqlparser.stmt.TSelectSqlStatement; 010import gudusoft.gsqlparser.stmt.mssql.TMssqlDeclare; 011 012public class Cursor extends Variable { 013 014 private TMssqlDeclare mssqlCursorStmt; 015 private TCursorDeclStmt cursorStmt; 016 private TOpenforStmt openforStmt; 017 private TLoopStmt loopStmt; 018 private TForStmt forStmt; 019 020 public Cursor(TMssqlDeclare select) { 021 super(select, select.getCursorName()); 022 setView(false); 023 this.mssqlCursorStmt = select; 024 } 025 026 public Cursor(TCursorDeclStmt select) { 027 super(select, select.getCursorName()); 028 setView(false); 029 this.cursorStmt = select; 030 } 031 032 public Cursor(TOpenforStmt select) { 033 super(select, select.getCursorVariableName()); 034 setView(false); 035 this.openforStmt = select; 036 } 037 038 public Cursor(TForStmt select) { 039 super(select, select.getLoopName()); 040 setView(false); 041 this.forStmt = select; 042 } 043 044 public Cursor(TLoopStmt select) { 045 super(select, select.getRecordName()); 046 setView(false); 047 this.loopStmt = select; 048 } 049 050 public TResultColumnList getResultColumnObject() { 051 if (cursorStmt != null) { 052 return cursorStmt.getSubquery().getResultColumnList(); 053 } 054 if (openforStmt != null) { 055 return openforStmt.getSubquery().getResultColumnList(); 056 } 057 if (forStmt != null) { 058 return forStmt.getSubquery().getResultColumnList(); 059 } 060 if (loopStmt != null) { 061 return loopStmt.getSubquery().getResultColumnList(); 062 } 063 if (mssqlCursorStmt != null) { 064 return mssqlCursorStmt.getSubquery().getResultColumnList(); 065 } 066 return null; 067 } 068 069 public TSelectSqlStatement getSelectStmt() { 070 if (cursorStmt != null) { 071 return cursorStmt.getSubquery(); 072 } 073 if (openforStmt != null) { 074 return openforStmt.getSubquery(); 075 } 076 if (forStmt != null) { 077 return forStmt.getSubquery(); 078 } 079 if (loopStmt != null) { 080 return loopStmt.getSubquery(); 081 } 082 if (mssqlCursorStmt != null) { 083 return mssqlCursorStmt.getSubquery(); 084 } 085 return null; 086 } 087 088 public TCursorDeclStmt getCursorStmt() { 089 return cursorStmt; 090 } 091 092 public TOpenforStmt getOpenforStmt() { 093 return openforStmt; 094 } 095 096 public TForStmt getForStmt() { 097 return forStmt; 098 } 099 100 public TLoopStmt getLoopStmt() { 101 return loopStmt; 102 } 103 104 public TMssqlDeclare getMssqlCursorStmt() { 105 return mssqlCursorStmt; 106 } 107 108}