Exemplo n.º 1
0
        public void SimpleCursorForLoop()
        {
            var query = (SqlQueryExpression) SqlExpression.Parse("SELECT * FROM table1");

            var block = new PlSqlBlockStatement();
            block.Declarations.Add(new DeclareCursorStatement("c1", query));

            var loop = new CursorForLoopStatement("i", "c1");
            loop.Statements.Add(new DeclareVariableStatement("a", PrimitiveTypes.String()));
            loop.Statements.Add(new AssignVariableStatement(SqlExpression.VariableReference("a"),
                SqlExpression.FunctionCall("cast",
                    new SqlExpression[] { SqlExpression.VariableReference("i"), SqlExpression.Constant("varchar") })));
            loop.Statements.Add(
                new ConditionStatement(SqlExpression.Equal(SqlExpression.VariableReference("i"), SqlExpression.Constant(50)),
                    new SqlStatement[] { new ReturnStatement(SqlExpression.VariableReference("a")) }));
            block.Statements.Add(new OpenStatement("c1"));
            block.Statements.Add(loop);
            var result = AdminQuery.ExecuteStatement(block);

            Assert.IsNotNull(result);
            Assert.AreEqual(StatementResultType.Result, result.Type);

            var value = result.Result.GetValue(0, 0);
            Assert.IsNotNull(value);
            Assert.IsFalse(Field.IsNullField(value));
        }
Exemplo n.º 2
0
        protected virtual SqlStatement VisitCursorForLoop(CursorForLoopStatement statement)
        {
            var loop = new CursorForLoopStatement(statement.IndexName, statement.CursorName);

            foreach (var child in statement.Statements)
            {
                loop.Statements.Add(VisitStatement(child));
            }

            return(loop);
        }
Exemplo n.º 3
0
        protected virtual SqlStatement VisitCursorForLoop(CursorForLoopStatement statement)
        {
            var loop = new CursorForLoopStatement(statement.IndexName, statement.CursorName);
            foreach (var child in statement.Statements) {
                loop.Statements.Add(VisitStatement(child));
            }

            return loop;
        }