public static void Evaluate(CursorStatement statement, Scope scope) { // TODO: global cursors? statement.Cursor.IsGlobal var name = statement.Cursor.Name.Value; var cursor = (Cursor)scope.Env.Vars[name]; switch (statement) { case OpenCursorStatement _: cursor.Open(scope); return; case CloseCursorStatement _: cursor.Close(); return; case DeallocateCursorStatement _: cursor.Deallocate(); return; case FetchCursorStatement fetch: var result = CursorFetch(fetch, cursor, scope); scope.Env.FetchStatus = result == null ? 1 : 0; if (result == null) { return; } foreach (var(v, x) in fetch.IntoVariables.Zip(result.Values, (v, x) => (v, x))) { scope.Env.Vars.DeclareOrSet(v.Name, x); } return; default: throw FeatureNotSupportedException.Subtype(statement); } }
public override void Visit(CursorStatement node) { ErrorCallback(RULE_NAME, RULE_TEXT, node.StartLine, node.StartColumn); }
public override void ExplicitVisit(CursorStatement fragment) { _fragments.Add(fragment); }
public override void Visit(CursorStatement node) { errorCallback(RULE_NAME, RULE_TEXT, node.StartLine, GetColumnNumber(node)); }
public sealed override void ExplicitVisit(CursorStatement node) { base.ExplicitVisit(node); }
public sealed override void Visit(CursorStatement node) { base.Visit(node); }
public override void ExplicitVisit(CursorStatement node) { this.action(node); }