internal BeginCursorFetchNextChainer(Chainer prev)
            : base(prev)
        {
            var cursor = BeginCursorChainer.TryGetBeginCursor(this);

            Build = (buildContext, buildArgs) =>
            {
                return(Text.GenerateSql(100)
                       .NewLine(Text.FetchNext).S()
                       .Append(Text.From).S()
                       .Append(cursor.CursorName).S()
                       .Append(Text.Into).S()
                       .Append(cursor.Variables).Terminate()
                       .ToString());
            };
        }
        internal EndCursorChainer(Chainer prev)
            : base(prev)
        {
            var root = GetRoot();

            --root.CursorCounter;
            var cursor = BeginCursorChainer.TryGetBeginCursor(this);

            CheckAndThrow();

            Build = (buildContext, buildArgs) =>
            {
                return(Text.GenerateSql(50)
                       .NewLine(Text.End).Terminate()
                       .NewLine(Text.Close).S().Append(cursor.CursorName).Terminate()
                       .NewLine(Text.Deallocate).S().Append(cursor.CursorName).Terminate()
                       .ToString());
            };
        }